C#使用字符串编码以查找全名

时间:2016-11-14 04:56:24

标签: c# string split

我正在使用Visual Studio创建一个C#windows form,帮助我找到用户的后缀,名字和姓氏。我正在使用string.split找到第一个空格并从那里拆分但它只能从第一个空间开始。如果用户输入"唐纳德先生"我无法在这种情况下使其发挥作用。

"先生。 -5空间 - 唐纳德-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.DonaldDuck。分割原始字符串时,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)

使用删除空字符串选项拆分,然后您将得到非空字数组作为结果。从那以后你可以获得名称部分。

Demo

答案 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];