2016-11-14 27 views
0

我正在使用Visual Studio创建一个C#windows form,它帮助我查找用户的后缀,名和姓。我正在使用string.split找到第一个空间并从那里分开,但它只能从第一个空间开始。如果用户输入“唐老鸭先生”,我无法使它在这种情况下工作。C#使用字符串进行编码以查找全名

“Mr. -5 spaces- Donald -5spaces- Duck”
代码不会读取第一个空格。
有什么建议吗?

+0

谢谢大家,我用**哈萨克斯坦的组合* *和** Avneesh Srivastava **解决我的问题。如果我有任何其他问题,我一定会在这里查看, –

回答

0

你应该总是使用String.Trim()函数。 (在字符串中处理用户输入时,要从字符串中删除前导和尾随空格)。

string s = " Mr. Donald duck "; 
// Split string on spaces. 
// ... This will separate all the words. 
string[] words = s.Trim().Split(' '); 
//.....check size of array. 
if(words.Length ==3) 
{ 
    string suffix=words[0]; 
    string firstname=words[1]; 
    string lastname=words[2]; 
} 

我没有得到-5在你的问题,但希望这会有所帮助。

0

拆分并删除空字符串选项,那么您将得到非空字数组作为结果。从那里你可以得到名字部分。

Demo

0

的语法String.Split会是这样的:

//    0  1  2 
    //   ooo|oooooo|oooo 
    string str = "Mr. Donald Duck"; 

    string suffix = str.Split(' ')[0]; 
    string fname = str.Split(' ')[1]; 
    string lname = str.Split(' ')[0]; 
0

只是为了解释 根据MSDN您可以轻松地通过使用字符串中删除从字符串两端的空格.Trim方法。你可以阅读它here。欲了解更多很好的了解,您可以访问here

string input = Console.ReadLine(); 
      // This will remove white spaces from both ends and split on the basis of spaces in string. 
string[] tokens = input.Trim().Split(' '); 

string title = tokens[0]; 
string firstname = tokens[1]; 
string secondname = tokens[2]; 
1

Trimming只会采取的开头和结尾的空白字符护理。 Here's what you need为了当你有话之间的所有这些额外的空间来得到的只是文字的3个有用的部分:

string name = "Mr.  Donald  Duck"; 
string[] split = name.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); 

字符串数组包含3项:Mr.DonaldDuck。在分割原始字符串时,StringSplitOptions.RemoveEmptyEntries将负责重复空格。

没有它,你会得到这样的事情:Mr.DonaldDuck

相关问题