我想根据以下条件将字符串拆分为多个字符串:
例如: “你好,你好吗?”我想分成:
不能重复多次。
到目前为止我得到的是:
string input = "hello how are you";
List<string> words = input.Split(' ').ToList();
List<string> inputs = new List<string>();
string temp = String.Empty;
for (int i = 0; i < words.Count; i++)
{
temp += words[i] + " ";
if (i > 0)
{
inputs.Add(temp);
}
}
输出以下内容:
hello how
hello how are
hello how are you
我也希望得到其他人,并需要一些帮助。
答案 0 :(得分:5)
一种方法是迭代每个单词并获得所有可能的序列。
示例:
string input = "hello how are you";
List<string> words = input.Split(' ').ToList();
List<string> inputs = new List<string>();
for (int i = 0; i < words.Count; i++)
{
var temp = words[i];
for(int j = i+1;j < words.Count;j++) {
temp += " " + words[j];
inputs.Add(temp);
}
}
//hello how
//hello how are
//hello how are you
//how are
//how are you
//are you
答案 1 :(得分:2)
这里是伪代码
for (int i = 0; i < words.Count - 1; i++)
{
for each (int j = i + 1; j < words.Count; j++)
{
//rebuild string from words[i] through words[j] and add to list
}
}
这个想法是将除了最后一个词之外的每个词都视为一个起始词(因为它不能跟随它的词)。对于起始单词,请考虑每个可能的结束单词(第一个是列表中的下一个单词,最后一个单词是最后一个单词)。然后对于每个开始/结束单词对,从中间的所有单词重建字符串,并将其添加到列表中