dav*_*_11 1 c# string substring
我已经声明了一个字符串,我想从字符串中获取第二个单词.例如.
string str = "Hello world";
Run Code Online (Sandbox Code Playgroud)
我想从str得到"世界"这个词.
最简单的答案是Split在空间上,并采取第二项:
var secondWord = str.Split(' ').Skip(1).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
我FirstOrDefault在这里使用,所以你得到一个有效的null结果只输入一个单词.
但缺点是它会解析整个字符串,所以如果你想要一本书的第二个字,这不是一个好建议.
或者,您可以使用它IndexOf来查找第一个和第二个空格,然后Substring获取该部分:
static string GetSecondWord(string str)
{
var startIndex = str.IndexOf(' ') + 1;
if (startIndex == 0 || startIndex == str.Length)
return null;
var endIndex = str.IndexOf(" ", startIndex, StringComparison.CurrentCulture);
if (endIndex == -1)
endIndex = str.Length - 1;
return str.Substring(startIndex, endIndex - startIndex + 1);
}
Run Code Online (Sandbox Code Playgroud)
这只会根据您的需要查看尽可能多的字符,然后在最后复制出您想要的部分.它将比上述表现更好.但是,除非你对所出版的每本书的第二个字进行编目,否则它可能无关紧要.
或者,以老式的方式做.遍历每个字符,直到找到第一个空格,然后将字符保留到字符串的下一个或结尾:
var sb = new StringBuilder();
bool spaceFound = false;
foreach(var c in str)
{
if(c == ' ')
{
if (spaceFound) //this is our second space so we're done
break;
spaceFound = true;
}
else
{
if (!spaceFound) //we haven't found a space yet so move along
continue;
sb.Append(c);
}
}
var secondWord = sb.ToString();
Run Code Online (Sandbox Code Playgroud)
该方法在性能上应与第二种方法相当.您可以使用枚举器而不是foreach循环来完成相同的操作,但我会将其作为练习留给读者.:)
你可以这样做.我建议在提出简单的问题之前先做搜索.
str.Split(' ')[1]
Run Code Online (Sandbox Code Playgroud)
请注意,您必须在输入中包含验证,例如字符串包含多个单词等.
| 归档时间: |
|
| 查看次数: |
10508 次 |
| 最近记录: |