【问题标题】:First Word of a string in C#C#中字符串的第一个单词
【发布时间】:2021-08-06 04:43:30
【问题描述】:

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

string test = "hello, world"

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

我可以尝试将分隔符添加为逗号,但即使有逗号或空格,我也只需要“你好”这个词。我的意思是如果 string test = "hello world" 那么它也应该返回 "hello"

【问题讨论】:

  • Split(Char[], StringSplitOptions)(多个分隔符)
  • firstWord = test.Split(' ', ',').FirstOrDefault();这对我有用
  • @StackUser 想想将所有单词拆分成数组的所有开销,或者使用 RegEx 的开销!除了逗号,您还期望有多少其他字符? test.Substring(0,test.IndexOf(" ")).Trim(","); 或简单的 test.Substring(0,test.IndexOf(" ")) 带有一个用于修剪非字母数字字符的循环:Char.IsLetter

标签: c# string parsing split


【解决方案1】:

如果您只想在字符串中包含 A-Z 或 a-z 字母,请使用正则表达式删除其他所有内容,然后拆分字符串。

Regex.Replace(str, "[^a-zA-Z0-9]", String.Empty).Split(' ').FirstOrDefault() 应该可以解决问题。

【讨论】:

    【解决方案2】:

    正则表达式就是方法!!!

    试试下面的代码:

    string pattern = @"^\w+";
    string test = "hello, world";
    var firstWord = Regex.Match(test, pattern);
    Console.WriteLine(firstWord);
    
    // output
    // hello
    

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

    【讨论】:

      【解决方案3】:

      我认为你可以使用 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 好吧,他问的是“你好,世界”,但你是对的 :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-17
      • 2019-08-08
      • 2015-05-08
      • 2013-09-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多