从字符串中获取第一个单词

时间:2018-04-17 02:04:20

标签: c#

我想只获得字符串的第一个单词,无论其前面是否有任何字符或标点符号。

有时,可能会有,.!。我不想要这些角色。

var s = "Hello, World";
var firstWord = s.Substring(0, s.IndexOf(" "));

这给了我Hello,。我想只获得Hello

我如何实现这一目标?

3 个答案:

答案 0 :(得分:3)

只需使用以下正则表达式:

var s = "Hello, World";
var result = Regex.Match(s, @"^([\w\-]+)");
Console.WriteLine(result.Value); // Result is "Hello"

无论是否以标点符号结尾或只是在空格之前,这都会得到第一个字。

答案 1 :(得分:1)

这对你有用。我假设单词将用空格分隔。

var input = "Hello, World";
var output = Regex.Replace(input.Split()[0], @"[^0-9a-zA-Z\ ]+", "");

答案 2 :(得分:0)

如果您知道要使用的字符列表,则可以选择

IndexOfAnyhttps://msdn.microsoft.com/fr-ca/library/11w09h50(v=vs.110).aspx)。这实际上取决于您要使用的定义以及您要处理的字符。你想如何处理œ,é,μ,½,¶,ç,+, - ,3等字符?

此外,您是否要处理区域设置,因为某些字符可能具有依赖于语言的分类。

Char有许多功能可以让你对字符进行分类。请参阅https://msdn.microsoft.com/en-us/library/system.char(v=vs.110).aspx

还有其他人提出的正则表达式解决方案。

所以最好的解决方案真的取决于你的需要。您是否需要正确处理任何Unicode字符或仅处理某些特定的ASCII字符?