字符串操作拆分字符串

本文关键字:字符串 拆分 操作 | 更新日期: 2023-09-27 17:56:45

创建一个应用程序,该应用程序在文本框中接受一个人的名字和姓氏(它们之间有一个或多个空格)以及单击"分隔名称"按钮时名称单独显示,并带有适当的标签。例如,输入"鲍勃·布朗"将导致输出 姓氏 : 布朗 名字 : 鲍勃

这是我的代码:

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

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

字符串操作拆分字符串

你试过吗?

StringSplitOptions.RemoveEmptyEntries

字符串拆分选项

正如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 属性来确认数组实际上至少包含两个项目,以避免在无效输入时出现异常。

您可以使用以下命令删除多个空格:

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

然后继续您的代码:

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

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

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

string str=textBox1.Text;
var name = str.Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries); 
MessageBox.Show("Family Name: " + name[1] + "'t" + "Given Name: " + name[0]);
也许

最好使用 LINQ?

例:

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

您可以使用正则表达式替换拆分字符串之前的所有重复空格

yourStr = System.Text.RegularExpressions.Regex.Replace(yourStr ,@"'s+"," ");

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

"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]);
    string str=textBox1.Text;
    string firstName = str.Substring(0, str.IndexOf(' '));
    string lastName = str.Replace(" ", "").Replace(firstName, "");