首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

截取字符串到数组的有关问题

2012-03-11 
截取字符串到数组的问题str[aaaa]11[bbbbb].....[aaaa]12[bbbbb]........[aaaa]13[bbbbb].....我想把 1

截取字符串到数组的问题
str="[aaaa]11[bbbbb]
.....
[aaaa]12[bbbbb]
......
..
[aaaa]13[bbbbb]
....."

我想把 11 12 13提取出来放在数组里,我这样写怎么不对?

public string[] GetJieQuAll(string start, string end, string html)
  {
  Regex regstr = new Regex(start + @"([\s\S]*?)" + end);
  MatchCollection mc = regstr.Matches(html);
  if (mc.Count > 0)
  {
  string[] strstring = new string[mc.Count];
  int i = 0;
  foreach (Match m in mc)
  {
  strstring[i] = m.Value;
  ++i;
  }
  return strstring;
  }
  return null;
  }


arrstr=GetJieQuAll("[aaaa]","[bbbbb]",str); //得到null了


这个GetJieQuAll有那里写不对吗?

[解决办法]

C# code
void Main(){string str=@"[aaaa]11[bbbbb].....[aaaa]12[bbbbb]........[aaaa]13[bbbbb].....";    var arrstr=GetJieQuAll("[aaaa]","[bbbbb]",str); //得到null了    Console.WriteLine(arrstr);}public string[] GetJieQuAll(string start, string end, string html)  {  Regex regstr = new Regex(Regex.Escape(start) + @"([\s\S]*?)" + Regex.Escape(end));  MatchCollection mc = regstr.Matches(html);  if (mc.Count > 0)  {  string[] strstring = new string[mc.Count];  int i = 0;   foreach (Match m in mc)  {  strstring[i] = m.Groups[1].Value;  i++;  }  return strstring;  }  return null;  }
[解决办法]
public static string[] GetJieQuAll(string start, string end, string html)
{
Regex regstr = new Regex(Regex.Escape(start) + @"([\s\S])*?" + Regex.Escape(end));
MatchCollection mc = regstr.Matches(html);
if (mc.Count > 0)
{
string[] strstring = new string[mc.Count];
int i = 0;
foreach (Match m in mc)
{
string s = Regex.Replace(m.Groups[0].ToString(), Regex.Escape(start).ToString(), "");
s = Regex.Replace(s, Regex.Escape(end).ToString(), "");
strstring[i] = s;
++i;
}
return strstring;
}
return null;
}
[解决办法]
探讨

你的问题有以下几点:
1. [ ]这在正则表示范围,你要匹配它们,就要转义先: \[ \]
2. 你使用了捕获组,但是最后取结果时,却没有用他们,应该是: strstring[i] = m.Groups[1].Value;
最后如果你用的是.NET3.0+以上的版本,代码还可以这样来写:

C# code

public string[] GetJieQuAll(string ……

热点排行