字符串操作拆分字符串

时间:2015-06-17 08:25:57

标签: c# string split

创建一个应用程序,在文本框中接受一个人的第一个给定名称和姓氏 (在它们之间有一个或多个空格)和单击“单独名称”按钮时 名称将单独显示,并带有适当的标签。例如,输入 “鲍勃布朗” 将导致姓氏的输出:Brown Given Name:Bob

这是我的代码:

string str=textBox1.Text;
string[] name = str.Split(' ');
MessageBox.Show("Family Name: " + name[1] + "\t" + "Given Name: " + name[0]);

如果文本框中有多个空格,我该怎么做? 如果有多个空格,则会显示如下: 姓氏:名字:鲍勃

8 个答案:

答案 0 :(得分:3)

你试过吗?

StringSplitOptions.RemoveEmptyEntries

stringsplitoptions

答案 1 :(得分:2)

正如PawanS建议您可以使用StringSplitOptions.RemoveEmptyEntries,如下所示:

string str=textBox1.Text;
string[] name = str.Split(' ', StringSplitOptions.RemoveEmptyEntries);
MessageBox.Show("Family Name: " + name[1] + "\t" + "Given Name: " + name[0]);

我还要提醒您通过检查aray的Length属性来确认该数组实际上至少包含两个项目,以避免在无效输入时出现异常。

答案 2 :(得分:2)

您可以使用以下方法删除多个空格:

string str = Regex.Replace(textBox1.Text, @"\s+", " ");

然后继续您的代码:

string[] name = str.Split(' ');
MessageBox.Show("Family Name: " + name[1] + "\t" + "Given Name: " + name[0]);

此方法的优点是它会删除任何类型的空格(例如制表符,换行符等),并用单个空格替换它们

答案 3 :(得分:1)

您应该使用字符串中的StringSplitOptions删除所有空条目,并按字符拆分字符串。例如:

string str=textBox1.Text;
var name = str.Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries); 

MessageBox.Show("Family Name: " + name[1] + "\t" + "Given Name: " + name[0]);

答案 4 :(得分:1)

最好也许使用LINQ?

示例:

var lastName = name.Last();
var firstNames = name.Take(name.Count()-1);
MessageBox.Show("Family Name: " + lastName + "\t" + "Given Name: " + string.Join(" ", firstNames.ToArray()));

答案 5 :(得分:0)

您可以使用RegExp替换分割字符串

之前的所有重复空格
yourStr = System.Text.RegularExpressions.Regex.Replace(yourStr ,@"\s+"," ");

答案 6 :(得分:0)

    string str=textBox1.Text;

    string firstName = str.Substring(0, str.IndexOf(' '));
    string lastName = str.Replace(" ", "").Replace(firstName, "");

答案 7 :(得分:0)

您的意思是可以编写输入数据,如:

"John   Doe" //more than one space

? 尝试这样做:

var input = "John   Doe";
var arr = s.Split(' ').Where(x=>!string.IsNullOrWhiteSpace(x)).ToArray();
MessageBox.Show("Family Name: " + arr[1] + "\t" + "Given Name: " + arr[0]);