我正在使用Visual Studio创建一个C#windows form
,帮助我找到用户的后缀,名字和姓氏。我正在使用string.split
找到第一个空格并从那里拆分但它只能从第一个空间开始。如果用户输入"唐纳德先生"我无法在这种情况下使其发挥作用。
"先生。 -5空间 - 唐纳德-5空间 - 鸭子"
代码没有通过第一个空格读取
有什么建议吗?
答案 0 :(得分:1)
Trimming只会处理前导和尾随空白字符。 Here's what you need当你在单词之间有所有额外的空格时,为了获得文本的3个有用部分:
string name = "Mr. Donald Duck";
string[] split = name.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
字符串数组将包含3个项目:Mr.
,Donald
和Duck
。分割原始字符串时,StringSplitOptions.RemoveEmptyEntries
将负责重复空白区域。
如果没有它,您会收到以下内容:Mr.
,,
,
,
,
Donald
,{{ 1}},,
,
,
答案 1 :(得分: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,但希望这会有所帮助。
答案 2 :(得分:0)
使用删除空字符串选项拆分,然后您将得到非空字数组作为结果。从那以后你可以获得名称部分。
答案 3 :(得分: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];
答案 4 :(得分:0)
只是为了解释 根据MSDN您可以使用String.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];