今天终于有分了, 再发一贴向大家请教, 可能用正则来做会简单和高效一些.

LoveCcav 2010-10-14 10:07:04
不好描述,举个例子来说明一下:

string s1 = "abcdlkdfsldflasjflkajsdfasdsldfkjsdlkfj";
string s2 = "ab,fj,fsds,ldfk,kdf"

大概就是这么两个字符串, 长度在分别是1024,512个字符左右

现在需要把s2中以逗号分隔的字符,分别作为查找条件,在s1在查找,找到后记录下位置, 然后删除

分不多, 请见谅...改天申请个马假来报答大家...谢谢.
...全文
95 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
LoveCcav 2010-10-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 q107770540 的回复:]
s1 = s1.Replace(m.Value, "");
[/Quote]

谢谢这位大哥 , 但是如果 s1中, 有个重复的字符串,这样的话, 一次就替换了, 而记录位置,只记录了一次,

应该是先删除第一次出现的,然后记录, 再删除,再记录
q107770540 2010-10-14
  • 打赏
  • 举报
回复

void Main()
{
string s1 = "abcdlkdfsldflasjflkajsdfasdsldfkjsdlkfj";
string s2 = "ab,fj,fsds,ldfk,kdf";

List<int> list = new List<int>(); //记录index
foreach (Match m in Regex.Matches(s2+",",@"\w*(?=,)"))
{
if(m.Value.Length>0)
{
int n = s1.IndexOf(m.Value);
Console.WriteLine(n);
list.Add(n);

s1 = s1.Replace(m.Value, "");
}
}

Console.WriteLine(s1);
}
/*
0
35
-1
26
3
cdlsldflasjflkajsdfasdsjsdlk

*/
Return门徒 2010-10-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 q107770540 的回复:]
C# code

void Main()
{
string s1 = "abcdlkdfsldflasjflkajsdfasdsldfkjsdlkfj";
string s2 = "ab,fj,fsds,ldfk,kdf";
List<int> list = new List<int>(); //记录index
……
[/Quote]
如果str2里的字符串,在str1里多次出现呢?
q107770540 2010-10-14
  • 打赏
  • 举报
回复

void Main()
{
string s1 = "abcdlkdfsldflasjflkajsdfasdsldfkjsdlkfj";
string s2 = "ab,fj,fsds,ldfk,kdf";
List<int> list = new List<int>(); //记录index
foreach (string s in s2.Split(','))
{
int m = s1.IndexOf(s);
Console.WriteLine(m);
list.Add(m);
s1 = s1.Replace(s, "");
}

Console.WriteLine(s1);
}

/*
0
35
-1
26
3
cdlsldflasjflkajsdfasdsjsdlk

*/
LoveCcav 2010-10-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wuyq11 的回复:]
foreach (string s in s2.Split(','))
{
int index = s1.IndexOf(s);
lst.Add(m);
s1 = s1.Remove(index, "").
}
[/Quote]

这样也不能解决 重复出现的问题 , 我改用双循环, 内层 while(s1.IndexOf(s) != -1)
wuyq11 2010-10-14
  • 打赏
  • 举报
回复
foreach (string s in s2.Split(','))
{
int index = s1.IndexOf(s);
lst.Add(m);
s1 = s1.Remove(index, "").
}
LoveCcav 2010-10-14
  • 打赏
  • 举报
回复
不知道把Replace这句话 ,改成 s1 = s1.Remove(m.Index, m.length);
能不能达到效果 .

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧