使用子字符串函数或正则表达式

时间:2011-06-20 09:15:04

标签: c# string

我想从字符串中提取ID,其格式为“somethinguseless_XXXXX”。 XXXXX是我需要的ID。字符串始终具有相同的长度,格式不会随着时间的推移而改变。

我找到了2个解决方案来提取ID => oldAttribute.substring(17,22)Regex.Match(oldAttribute,@"_([0-9]{5})").Groups[1].value

你认为哪一个比另一个好?

7 个答案:

答案 0 :(得分:2)

如果长度一致,Substring()也可以正常工作,并且可能表现更好。对几百万次迭代的快速测试可能会验证这种假设。

答案 1 :(得分:1)

就我个人而言,我选择了3,根据下划线拆分字符串。

var id = "somethinguseless_XXXXXX".Split('_')[1]; 

你会想做一些更好的测试,以确保数组是你想要的长度,但这是我可能采取的方法。

我知道你已经说过,字符串的长度总是相同的,并且不会随着时间的推移而改变,但是我的经验告诉我,事情总是会改变,而且往往并不总是一样。

答案 2 :(得分:0)

使用RegexSubString更易混淆,但我认为SubString的效果更高。

答案 3 :(得分:0)

当你知道字符串中ID的位置时,

substring是更好的选择。

答案 4 :(得分:0)

我的建议,如果格式相同,如果“somethinguseless”不包含_,你可以使用string.split();

答案 5 :(得分:0)

int p=5; //length of the substring    
string id = oldAttribute.substring(oldAttribute.Length-p, p)

答案 6 :(得分:-1)

转到第二个。

Regex.Match(oldAttribute,@ “_([0-9] {5})”)。组[1]。价值

这甚至适用于下划线之前的字符串长度无论如何都会改变。