在某些字符之前和之后修剪字符串

时间:2015-07-17 15:47:57

标签: c# asp.net trim

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

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

我需要获取值,数字显示为“456009806”。 修剪此字符串以删除标记的最佳方法是什么,所以剩下的就是内部的数字?

3 个答案:

答案 0 :(得分:3)

此解决方案没有第三方依赖。如果您每次都知道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

更新:

此外,使用Substring,标准Regex和Compiled正则表达式运行一些性能测试是非常了不起的。我尽力使用抖动预热代码并使用StopWatch中的刻度来获得准确的结果。

Gist for Linqpad

以下是结果图:

Results from Linqpad with /o+ compiler flag enabled

答案 1 :(得分:1)

RegEx it,或者如果你赶时间:

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

希望这会有所帮助;)

答案 2 :(得分:0)

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

字符串