Trim 特定字符前后的字符串

Trim a string before and after certain characters

我有一个非常讨厌的字符串,看起来像这样(不是实际呈现 HTML,而是 字符串 ):

<div class='isc-content-block' data-contentmanagerid='60dd19b0-e3ba-4629-935c-a2dd00e052b8' data-contentmanagername='Product: B456009805'>456009806</div>

我需要获取值,显示为“456009806”的数字。 trim 这个字符串删除标签的最佳方法是什么,所以剩下的就是里面的数字?

此解决方案不依赖第三方。如果您每次都知道 HTML 格式并且它不是一个非常复杂的过程,那么使用一个简单的 Regex 并相应地进行调整。

简单的解决方案:

var result = Regex.Match("<div class='isc-content-block' data-contentmanagerid='60dd19b0-e3ba-4629-935c-a2dd00e052b8' data-contentmanagername='Product: B456009805'>456009806</div>", ">(.*)</.*>");

result.Groups[1].Value

会给你:

456009806

更新:

此外,运行 一些使用子字符串、标准正则表达式和编译正则表达式的性能测试非常惊人。尽我最大努力通过抖动预热代码和使用 StopWatch.

中的刻度来获得准确的结果

Gist for Linqpad

这是结果的图片:

var str = @"<div class='isc-content-block' data-contentmanagerid='60dd19b0-e3ba-4629-935c-a2dd00e052b8' data-contentmanagername='Product: B456009805'>456009806</div>";

Regex regex = new Regex("<.*?>");
var justnumstr = regex.Replace(str, string.Empty);

这将导致 justnumstr 包含 456009806

的字符串

正则表达式,或者如果你赶时间:

// Assuming s is your string
string result = s.Substring(s.IndexOf(">") + 1).Replace("</div>", string.Empty);

希望对您有所帮助 ;)