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

C# 从字符串中获取第一个单词,c#,C#,我只想得到字符串的第一个单词,不管前面有什么字符或标点符号 有时,可能会出现、或或。我不想要这些角色 var s = "Hello, World"; var firstWord = s.Substring(0, s.IndexOf(" ")); 这给了我你好,。我只想得到Hello 如何实现这一点?这将对您有效。我假设单词将用空格分隔 var input = "Hello, World"; var output = Regex.Replace(input.Split()[0], @"[^0-9

我只想得到字符串的第一个单词,不管前面有什么字符或标点符号

有时,可能会出现
。我不想要这些角色

var s = "Hello, World";
var firstWord = s.Substring(0, s.IndexOf(" "));
这给了我
你好,
。我只想得到
Hello


如何实现这一点?

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

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

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

var s = "Hello, World";
var result = Regex.Match(s, @"^([\w\-]+)");
Console.WriteLine(result.Value); // Result is "Hello"
这将获得第一个单词,无论它是否以标点符号结尾,还是仅在空格前面。

索引(
)是一种选择,如果您知道要使用的字符列表。这实际上取决于要使用的定义以及要处理的字符。您希望如何处理像œ、œ、µ、½、œ、œ、+、-、3…这样的字符

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

Char
具有许多功能,允许您对字符进行分类。看

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


因此,最好的解决方案实际上取决于您的需要。您需要正确处理任何Unicode字符还是只处理某些特定的ASCII字符?

您可以接受正则表达式吗?当然可以,但我不知道如何使用它:)如果不熟悉正则表达式,请尝试
Split
我会首先使用Replace()删除任何你不想考虑的标点/字符。结果。值将是单词。@ GangangdaveTr.
Console.WriteLine(结果)
打印出“Hello”,因为
Match
ToString()实现。谢谢你的澄清。@MahadevanSwamy不客气。请标记为答案,以便对其他人也有用。谢谢:)小心点。这对像“我们去购物中心”这样的东西不起作用。第一个单词是“let”,因为正则表达式替换正在剥离所有非字母数字字符。不要忘记处理只有一个单词(没有分隔符)的情况-索引将是-1。