字符串操作拆分字符串
本文关键字:字符串 拆分 操作 | 更新日期: 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, "");