句子列表到单一的句子列表(组合词组不重复)

时间:2018-01-28 12:42:24

标签: c# string split

我正在努力解决这个问题。

我有一个像这样的多行的字符串;

Gözler ne renk olursa olsun, gözyaşları hep aynı renktedir.
Dünyanın en güzel gülüşünü ona vermişler sanki.
Kaybetmekten korktuğum ne varsa kaybettim ben.
Çünkü öyle güzel baktı ki, gökyüzünü gözlerine sığdırmıştı.
Sen gelmek isteseydin, o sokakların hep aynı bana çıkardı.
O değil de benim uzaklara gitmem lazım, çok uzaklara.
Yan yanaydık. Ve şehir böyle mucize görmemişti.
Benim yaşayacağım ne varsa, seninle olsun istiyorum.

我将这个字符串用\ n字符拆分为字符串列表,然后用空格字符拆分单词,然后用2或3组合单词;

 string[] LineWords = Line.split(' ').ToArray();
 int wordSplitC = 2;
 List<string> CombinedWords = LineWords.Where((word, index) => index + wordSplitC <= LineWords.Length).Select((word, index) => String.Join(" ", LineWords.Skip(index).Take(wordSplitC).Select(r => r.Trim()))).ToList();

在示例中,我将第一行的单词组合在一起。         enter image description here 现在我应该删除重复的句子,如果句子包含一个带有另一个句子的组合词项。

在此示例中,输出字符串具有以下修改:

Gözler ne renk olursa olsun, gözyaşları hep aynı renktedir.
Dünyanın en güzel gülüşünü ona vermişler sanki.
Kaybetmekten korktuğum ne varsa kaybettim ben.
Çünkü öyle güzel baktı ki, gökyüzünü gözlerine sığdırmıştı.
**Sen gelmek isteseydin, o sokakların hep aynı bana çıkardı.**
O değil de benim uzaklara gitmem lazım, çok uzaklara.
Yan yanaydık. Ve şehir böyle mucize görmemişti.
**Benim yaşayacağım ne varsa, seninle olsun istiyorum.**
  1. 应该删除第5行的句子,因为使用了“hepynı”字 在第一行。
  2. 因为“ne”而应删除最后一行的句子     varsa“word用于行:3
  3. 我希望我能理解我的问题。

    我正在尝试那张照片,但它不稳定。 enter image description here

    有什么想法吗? 感谢

1 个答案:

答案 0 :(得分:0)

最后有一个解决方案;

        string wordSplitCount = Microsoft.VisualBasic.Interaction.InputBox("Word split count", "Enter word split count", "2");
        int wordSplitC = 0;
        int.TryParse(wordSplitCount, out wordSplitC);
        this.richTextBox1.Enabled = false;
        if (wordSplitC > 0)
        {
            List<string> WordList = new List<string>();
            List<string> LineList = this.richTextBox1.Text.Split('\n').ToList();
            LineList.Select((Line, Index) => new { Line, Index }).ToList().ForEach(Item =>
            {
                string[] Words = Item.Line.Split(' ').ToArray();
                List<string> CombinedWords = Words.Where((word, index) => index + wordSplitC <= Words.Length).Select((word, index) => String.Join(" ", Words.Skip(index).Take(wordSplitC).Select(r => removeTurkishCharacters(r).Trim()))).ToList();
                LineList.RemoveAll(x => CombinedWords.Any(c => removeTurkishCharacters(x).Contains(removeTurkishCharacters(c))) && x != Item.Line);
            });
            this.richTextBox2.Text = string.Join("\n", LineList);
            this.richTextBox1.Enabled = true;
        }

这是工作示例,

enter image description here

谢谢大家。