如何在字符串中查找第二个单词

时间:2015-08-03 06:55:42

标签: c# winforms

当我运行此代码时,其目的是仅获取3个单词句子中的第一个,第二个和第三个单词,并将每个单词显示在文本框中。我用的句子是'凯瑞讲故事',看看图片,看看我的意思,

然而问题是,当我运行它时,第三个词是'stori','es'发生'故事'发生了什么

enter image description here

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;

问题出在哪里?

4 个答案:

答案 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