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

3

如何获取字符串的第一个单词。

string test = "hello, world"

我使用了test.Split(' ').FirstOrDefault(),但它返回了"hello,"。

我可以尝试添加逗号作为分隔符,但即使有逗号或空格,我仍只需要单词 'hello'。我的意思是,如果字符串test = "hello world",那么它也应该返回 "hello"。


2
Split(Char[], StringSplitOptions)(多个分隔符) - Jimi
1
firstWord = test.Split(' ', ',').FirstOrDefault(); 这对我起作用了。 - StackUser
@StackUser 请考虑将所有单词拆分成数组的开销,或使用正则表达式的开销!除了逗号以外,您还期望有多少其他字符?test.Substring(0,test.IndexOf(" ")).Trim(","); 或者只需使用循环来修剪非字母数字字符:Char.IsLettertest.Substring(0,test.IndexOf(" ")) - Jeremy Thompson
这个回答解决了你的问题吗?从字符串中获取第一个单词 - Mike Nakis
3个回答

1
如果您只想在字符串中保留 A-Z 或 a-z 字母,可以使用正则表达式删除其他所有内容,然后拆分字符串。
Regex.Replace(str.Trim(), "[^a-zA-Z0-9]", " ").Split(' ').FirstOrDefault();

1
正则表达式是王道!!!
尝试以下代码:
string pattern = @"^\w+";
string test = "hello, world";
var firstWord = Regex.Match(test, pattern);
Console.WriteLine(firstWord);

// output
// hello

不要忘记包含命名空间 'System.Text.RegularExpressions'


-2

我认为你可以使用类似Char的东西,这样更容易理解。

例如:

string test = "Hello, world!";

string split = test.Split(' ')[0];           //Split by space
if (!Char.IsLetter(split.Last()))            //Check if last character is letter
    split = split.Remove(split.Length - 1);  //If not, remove last character
    
Console.WriteLine(split);                    //Print out the word

string test = "Hello!?! world!";怎么样? - Enigmativity
@Enigmativity 好吧,他问的是“Hello, world”,但你说得对 :) - Martin Serdült

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接