【发布时间】:2014-03-29 02:02:12
【问题描述】:
这是我到目前为止所做的。问题是如果连词在句子中出现两次,则代码不适用于连词的第二次出现。请问有高手可以帮忙吗?
private void SplitSentence_Click(object sender, EventArgs e)
{
richTextBox2.Text = "";
richTextBox3.Text = "";
string[] keywords = { " or ", " and ", " hence", "so that", "however", " because" };
string[] sentences = SentenceTokenizer(richTextBox1.Text);
string remSentence;
foreach (string sentence in sentences)
{
remSentence = sentence;
richTextBox3.Text = remSentence;
for (int i =0; i < keywords.Length; i++)
{
if ((remSentence.Contains(keywords[i])))// || (remSentence.IndexOf(keywords[i]) > 0))
{
richTextBox2.Text += remSentence.Substring(0, remSentence.IndexOf(keywords[i])) + '\n' + keywords[i] + '\n';
remSentence = remSentence.Substring(remSentence.IndexOf(keywords[i]) + keywords[i].Length);
}
}
richTextBox2.Text += remSentence;
}
}
public static string[] SentenceTokenizer(string text)
{
char[] sentdelimiters = new char[] { '.', '?', '۔', '؟', '\r', ':', '-' }; // '{ ',' }', '( ', ' )', ' [', ']', '>', '<','-', '_', '= ', '+','|', '\\', ':', ';', ' ', '\'', ',', '.', '/', '?', '~', '!','@', '#', '$', '%', '^', '&', '*', ' ', '\r', '\n', '\t'};
// text.Remove('\n');
return text.Split(sentdelimiters, StringSplitOptions.RemoveEmptyEntries);
}
【问题讨论】:
标签: c#