一个不知道用什么方法能实现的问题。快来赐教。 是不是后面的字符和前面的比较,如果包含前面的就过滤掉啊?如果是建议用string 的StartWith判断 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 写个循环吧---纯猜测ArrayList al = new ArrayList();for(int i = 0; i < yourArray.Length ; i++){ if(al.Count > 0 ) { bool flag = false; foreach(string s in al) { if (s.StartsWith(yourArray[i])) { flag = true; break; } } if(!flag) al.Add(yourArray[i]); }} 过滤条件如同搜索的*的作用,如我们搜索“a@b*”即可把a@b后面跟任意的东西的都搜索出来,如果已经有了a@b那么它后面跟了尾巴的都去掉。 过滤条件是:如果有a@b@c 过滤,反之保留 是不是这个意思啊:a@b的前面可以有东西,后面不能有,有就弃掉如果是这样的话,只需先将所有不含a@b的保留,在将含有它的判断是否在末尾,是就保留 如果在这个数组中已存在一个“a@b”的数据,那么就把这个数组中以“a@b”开头的所有数据删掉。这次中该可以理解了吧。 to:khpcg(欢乐英雄) 判断条件是:对每一条数据来说:1。没有和自己相同的。2、不能有其他的数据比自己短,同时和自己的前面字符相同,如:a@b@c就有a@b和它前面3位相同否则就去掉。 假设过滤条件为s:string [] str={"a@b","a@b@c","b@c","d@a@b","d@a@b@c"}string s="a@b@c"for(int j=0,i=0;i<str.length;i++){ if(str[i].indexof(s,0)!=-1) j++; else str[i-j]=str[i]; } 2、不能有其他的数据比自己短,同时和自己的前面字符相同,如:a@b@c就有a@b和它前面3位相同应该是:2、如果有其他的数据比自己短,同时和自己的前面字符相同,如:a@b@c就有a@b和它前面3位相同就去掉 我参照brightheroes(闭关|那一剑的风情) 兄的办法终于搞定了。现把我的函数现出来,让大家提提意见,看还有哪里需要改进不。private ArrayList FilterNodes(String[] str) { ArrayList arry=new ArrayList(); for(int i=0;i<str.Length;i++) { bool flag = false; if(arry.Count > 0 ) { foreach(string strs in arry) { if (str[i].StartsWith(strs)) { flag = true; break; } } } if(!flag) arry.Add(str[i]); } return arry; } //////prefix 前缀///db ///star 开始比较位置 (前缀位置+1) star从1开始void myFilter( ref string[] db,string prefix,int star) { for(int i= star; i<db.length ; ++i) { if(db[i] !=null && db[i] !="" && db[i].indexof(s,0)==0) { db[i]=""; } } int st=star; while( st<db.length-1 && (db[st]==null || db[st]=="")) { st++; } if ( st < db.length-1 ) myFilter ( ref db,db[st],st+1 ); }////void myPrint( string[] db){ for(int j=0;j<db.length; j++) { if(db[j] !=null && db[j]!="" ) { //.......... } }} webbrowser加载网页中的图片怎么另存到本地? Treeview排序的问题 DataGridView全部删除不成功? 配置 IIRF 出现错误...如何解决`???? 菜鸟问一个查找msdn后想不明白的问题 C#中如何编写接收从IE浏览器输入FTP连接的请求 winfrom中,如何让Enter按下后执行一个button的Click事件; 如何访问foxpro数据库? 为什么在NumericUpDown控件中使用tooltip不起作用? 关于linkLabel控件的使用 在Win2000可以运行,在XP下不可以?(在线等) 实例化类后类的结构体成员的引用问题 xml读取分析
---纯猜测
ArrayList al = new ArrayList();
for(int i = 0; i < yourArray.Length ; i++)
{
if(al.Count > 0 )
{
bool flag = false;
foreach(string s in al)
{
if (s.StartsWith(yourArray[i]))
{
flag = true;
break;
}
}
if(!flag)
al.Add(yourArray[i]);
}
}
如果已经有了a@b那么它后面跟了尾巴的都去掉。
a@b的前面可以有东西,后面不能有,有就弃掉
如果是这样的话,只需先将所有不含a@b的保留,在将含有它的判断是否在末尾,是就保留
判断条件是:
对每一条数据来说:
1。没有和自己相同的。
2、不能有其他的数据比自己短,同时和自己的前面字符相同,如:a@b@c就有a@b和它前面3位相同否则就去掉。
string [] str={"a@b","a@b@c","b@c","d@a@b","d@a@b@c"}
string s="a@b@c"
for(int j=0,i=0;i<str.length;i++)
{
if(str[i].indexof(s,0)!=-1)
j++;
else
str[i-j]=str[i];
}
现把我的函数现出来,让大家提提意见,看还有哪里需要改进不。
private ArrayList FilterNodes(String[] str)
{
ArrayList arry=new ArrayList();
for(int i=0;i<str.Length;i++)
{
bool flag = false;
if(arry.Count > 0 )
{
foreach(string strs in arry)
{
if (str[i].StartsWith(strs))
{
flag = true;
break;
}
}
}
if(!flag)
arry.Add(str[i]); }
return arry;
}
///prefix 前缀
///db
///star 开始比较位置 (前缀位置+1) star从1开始
void myFilter( ref string[] db,string prefix,int star)
{
for(int i= star; i<db.length ; ++i)
{
if(db[i] !=null && db[i] !="" && db[i].indexof(s,0)==0)
{
db[i]="";
}
}
int st=star;
while( st<db.length-1 && (db[st]==null || db[st]==""))
{
st++;
}
if ( st < db.length-1 )
myFilter ( ref db,db[st],st+1 );
}
////
void myPrint( string[] db)
{
for(int j=0;j<db.length; j++)
{
if(db[j] !=null && db[j]!="" )
{
//..........
}
}
}