子串格式化以获取第一个下划线之后但第二个下划线之前的所有字符?

时间:2011-12-28 18:00:24

标签: c# string substring delimiter

例如我们有这个字符串:

  • hello_my name_is_bob

并且只想获得字符串的“my name”部分,我怎么能用substring来得到它?

此外,示例中的格式将始终相同,因此我只需要检索第一个下划线之后但第二个下划线之前的内容。

3 个答案:

答案 0 :(得分:14)

string.Split可以做到这一点,无需进入Substring

var parts = "hello_my name_is_bob".Split('_');

string name = parts[1] // == "my name";

或者,在一个班轮中(虽然我觉得这不太可读):

string name = "hello_my name_is_bob".Split('_')[1];

答案 1 :(得分:2)

"hello_my name_is_bob".Split('_').Skip(1).First();

答案 2 :(得分:1)

如果您确定您有两个下划线,请使用以下代码:

var pos = str.IndexOf('_');
var last = str.IndexOf('_', pos+1);
var res = str.Substring(pos+1, last-pos-1);

如果下划线的数量少于两个,则会失败。