使用子字符串获取名称字符串的第一个名称失败[C#]

时间:2015-04-17 21:26:20

标签: c# substring

所以我有这段代码:

MessageBox.Show("Welcome," + name.Substring(0, nome.IndexOf(" ")) + "!");

让我们假设名字是" Phiter Fernandes",好吧它会说:

欢迎,Phiter!

但如果名字只是" Phiter"它会停止而不会运行剩下的代码。 显然是因为substring方法没有空格来检索名字。

但我不希望它跳过剩下的代码,我希望它即使没有空间也可以工作。

我尝试使用try catch,就像这样:

    try
 {
     MessageBox.Show("Welcome," + name.Substring(0, nome.IndexOf(" ")) + "!");
 }
catch
 { 
     MessageBox.Show("Welcome," + name + "!");
 }

它可以工作,但是当代码运行catch时会发出恼人的声音。 还有其他方法吗?获得名字的另一种方式可能是?

2 个答案:

答案 0 :(得分:4)

尝试在有空格的地方拆分字符串,然后选择第一个元素,它始终是第一个名称。

MessageBox.Show("Welcome," + name.Split(' ')[0] + "!");

答案 1 :(得分:0)

您可以尝试多个选项。

  1. 替换使用正则表达式。

    string input = "Your string      " + "whitespace.";
    string pattern = "\\s+";
    string replacement = " "; 
    Regex rgx = new Regex(pattern); 
    string result = rgx.Replace(input, replacement);
    
  2. 检查是否存在空间。

    if(name.Contains(" "))
        MessageBox.Show("Welcome," + name.Substring(0, nome.IndexOf(" ")) + "!");
    
  3. 修剪空格

    string fullName = name;
    var names = fullName.Split(' ');
    string firstName = names[0];
    MessageBox.Show("Welcome," + firstName + "!");
    
  4. 让我知道您使用了哪一个!