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

5
例如我们有这个字符串:
  • hello_my name_is_bob
我们想要获取字符串中"my Name"这一部分,如何使用substring函数来简单地实现呢?
同时,示例的格式始终保持不变,因此我们只需要获取第一个下划线后面但在第二个下划线之前的内容。
3个回答

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];

不错,一开始我用的是双引号,但出现了异常,所以我改成了单引号,结果就像个冠军一样工作了。 - MDL
@MDL - 在C#中,双引号用于界定字符串,单引号用于界定字符。 - Oded

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

1
如果您确定有两个下划线,请使用以下代码:
var pos = str.IndexOf('_');
var last = str.IndexOf('_', pos+1);
var res = str.Substring(pos+1, last-pos-1);

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接