当我运行此代码时,其目的是仅获取3个单词句子中的第一个,第二个和第三个单词,并将每个单词显示在文本框中。我用的句子是'凯瑞讲故事',看看图片,看看我的意思,
然而问题是,当我运行它时,第三个词是'stori','es'发生'故事'发生了什么var tbt = textBox.Text;
var firstWord = tbt.Substring(0, tbt.IndexOf(" "));
var indexword = tbt.IndexOf(" ");
var indexnumber = indexword +1;
string myString = indexnumber.ToString();
var secondWord = tbt.Substring(indexnumber, tbt.IndexOf(" "));
var indexword2 = tbt.IndexOf(" ", indexnumber);
var indexnumber2 = indexword2 + 1;
string myString2 = indexnumber2.ToString();
var thirdWord = tbt.Substring(indexnumber2, tbt.IndexOf(" "));
var indexword3 = tbt.IndexOf(" ", indexnumber2);
var indexnumber3 = indexword3 + 1;
string mystring3 = indexnumber3.ToString();
textBox6.Text = firstWord;
textBox7.Text = secondWord;
textBox8.Text = thirdWord;
问题出在哪里?
答案 0 :(得分:7)
您可以尝试通过String.Split()
方法分割句子:
string test = "kelly tell stories";
string[] split = test.Split(' '); //Use empty space between word(s) as split character
for(int i=0; i< split.Length; i++)
{
Console.WriteLine(split[i]);
}
Console.ReadLine();
这在一维数组中产生3个字符串元素,每个元素都可以通过索引访问。 0 =第一个单词, 1 =第二个单词 ......等等。
答案 1 :(得分:3)
为何太复杂?可以通过以下代码完成:
string input = "kerry tells stories";
string[] output=input.Split(' ');
textBox6.Text = output[0];
textBox7.Text = output[1];
textBox8.Text = output[2];
答案 2 :(得分:2)
IndexOf正在使用第一个空格的索引,它不会移动。
报告此实例中指定字符串的第一次出现的从零开始的索引。
您可以使用Split
var words = tbt.Split(new char[]{' '});
1 = words[0]
2 = words[1]
3 = words[2]
答案 3 :(得分:0)
这是一种使用带有多个标记的拆分的方法:
Dim a() As String = txtSource.Text.Split({vbCr, vbLf, ".", "?", "!"}, StringSplitOptions.RemoveEmptyEntries)
txtSentences.Text = String.Join(vbCrLf, a)
a = txtSource.Text.Split({" ", ",", ";", ":", vbCr, vbLf, ".", "?", "!"}, StringSplitOptions.RemoveEmptyEntries)
txtWords.Text = String.Join(vbCrLf, a)
不胜任何所有案例,但很多是他们。添加三个多行文本框进行测试:txtSource,txtSentences,TxtWords