我想只获得字符串的第一个单词,无论其前面是否有任何字符或标点符号。
有时,可能会有,
或.
或!
。我不想要这些角色。
var s = "Hello, World";
var firstWord = s.Substring(0, s.IndexOf(" "));
这给了我Hello,
。我想只获得Hello
。
我如何实现这一目标?
答案 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)
IndexOfAny
(https://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字符?