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

c#字符串提取的有关问题

2012-01-09 
c#字符串提取的问题。有这么几个字符串:string str1“《红与黑》第90章第37页第30行//这个字符串要提取出来

c#字符串提取的问题。
有这么几个字符串:
string str1=“《红与黑》第90章第37页第30行"; //这个字符串要提取出来:90,37,30也就是说提取数字
string str2="《红与黑》第90章第70行"; //这个也是提取90,70数字,

我改怎样吧这些数字从字符串中提取出来呢?
并且我知道我提取的数字对应的是章,还是页,还是行????

[解决办法]
正则表达式,写了段代码:
string str = "《红与黑》第90章第37页第30行";
List< KeyValuePair<int, string>> list = new List<KeyValuePair<int,string>>();
foreach (Match m in Regex.Matches(str, "([\\d]+)([行|页|章])"))
{
list.Add(new KeyValuePair<int, string>(int.Parse(m.Groups[1].Value), m.Groups[2].Value));
}

//Console.WriteLine("With 行|页|章");
foreach (KeyValuePair<int, string> k in list)
Console.Write("{0}({1}), ", k.Key, k.Value);

Console.WriteLine();
//Console.WriteLine("Only number");
foreach (KeyValuePair<int, string> k in list)
Console.Write("{0}, ", k.Key);

输出结果为
90(章), 37(页), 30(行),
90, 37, 30,
[解决办法]

C# code
try {    Regex regexObj = new Regex(@"\d+");    Match matchResults = regexObj.Match(subjectString);    while (matchResults.Success) {        // matched text: matchResults.Value        // match start: matchResults.Index        // match length: matchResults.Length        matchResults = matchResults.NextMatch();    } } catch (ArgumentException ex) {    // Syntax error in the regular expression} 

热点排行