例如,我们有这个字符串:子字符串格式化以获取第一个下划线之后但第二个下划线之前的所有字符?
- hello_my name_is_bob
,并希望得到只有“我的名字”字符串的一部分,我怎么能得到这个简单地用子?
此外,示例中的格式将始终相同,因此我只需要检索第一个下划线之后但第二个下划线之前的内容。
例如,我们有这个字符串:子字符串格式化以获取第一个下划线之后但第二个下划线之前的所有字符?
,并希望得到只有“我的名字”字符串的一部分,我怎么能得到这个简单地用子?
此外,示例中的格式将始终相同,因此我只需要检索第一个下划线之后但第二个下划线之前的内容。
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];
如果您知道确定你有两个下划线,使用下面的代码:
var pos = str.IndexOf('_');
var last = str.IndexOf('_', pos+1);
var res = str.Substring(pos+1, last-pos-1);
这会失败l如果下划线的数量少于两个。
"hello_my name_is_bob".Split('_').Skip(1).First();
好东西,起初我使用双引号,但它给了我一个例外,所以我将它改为单引号,它像冠军一样工作。 – MDL 2011-12-28 18:59:26
@MDL - C#中的双引号分隔字符串,单引号分隔字符。 – Oded 2011-12-28 19:01:05