字符串trim的使用问题
我有一段字符串“ <TD height=25> <FONT style= "FONT-SIZE: 8pt "> <B> 2.8.0.8 </B> </FONT> </TD> ”
我想要提取 <B> </B> 中间的字符串 “8.8.0.8”,所以我用了字符串的trim函数,代码如下:
trimChar = " <TD height=25> <FONT style=\ "FONT-SIZE: 8pt\ "> <B> ";
line = line.TrimStart(trimChar.ToCharArray());
trimChar = " </B> </FONT> </TD> ";
line = line.TrimEnd(trimChar.ToCharArray());
运行之后发现问题:如果我要提取的字符串开头或末尾包含有trimChar中的字符,那样我要的字符也会被trim掉,比如我开头的trimchar有8这个数字,那么我最终提取到的字符串就只有 “.8.0.8”而不是“8.8.0.8”,这种问题要如何解决??或者说哪位高手有更好的提取字符串的办法??要说明的是我要提取的字符串是IP地址,位数不定,只知道是在 <B> </B> 之间。
------解决方案--------------------要说明的是我要提取的字符串是IP地址,位数不定
------------
我所给的只是根据你这个需求来写的,需求不同,当然可以写不同的正则
按你原来的思路,可以用SubString或者Remove把不要的内容去掉,但这样做局限性岂不是更大
如你所说,如果要提取的内容两侧固定,那就是符合一定的规律,可以换种形式的正则来做
比如“只知道是在 <B> </B> 之间”这种需求
提取单个这样写
string yourStr = ..........;
string ip = string.Empty;
Match m = Regex.Match(yourStr, @ "(? <= <b> )[\s\S]*?(?= </b> ) ", RegexOptions.IgnoreCase);
if (m.Success)
{
ip = m.Value;
}
提取多个这样写
string yourStr = .........;
MatchCollection mc = Regex.Matches(yourStr, @ "(? <= <b> )[\s\S]*?(?= </b> ) ", RegexOptions.IgnoreCase);
foreach (Match m in mc)
{
richTextBox2.Text += m.Value + "\n ";
}