创建一个应用程序,在文本框中接受一个人的第一个给定名称和姓氏 (在它们之间有一个或多个空格)和单击“单独名称”按钮时 名称将单独显示,并带有适当的标签。例如,输入 “鲍勃布朗” 将导致姓氏的输出:Brown Given Name:Bob
这是我的代码:
string str=textBox1.Text;
string[] name = str.Split(' ');
MessageBox.Show("Family Name: " + name[1] + "\t" + "Given Name: " + name[0]);
如果文本框中有多个空格,我该怎么做? 如果有多个空格,则会显示如下: 姓氏:名字:鲍勃
答案 0 :(得分:3)
答案 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]);