查找条件为

时间:2016-12-05 19:43:24

标签: c# string text separator string-length

晚上好。 所以我有一个文本文件,其中包含多行文本和分隔符。我需要找到条件最长的文本片段,该单词的最后一个字母必须是后一个单词的第一个字母。该文本片段可以继续多行,而不仅仅是一行。

F.e。

我们有这个字符串数组:

Hello, obvious smile eager ruler.
Rave, eyes, random.

所以从这两行我们得到的文本片段将是:

Hello, obvious smile eager ruler.
Rave, eyes

我们的文字片段以单词“eyes”结尾,因为“random”不以“s”开头。

我们的txt文件中的下两行:

Johnny, you use.
Eye eager sun.

因此,从这两个其他行我们得到的文本片段将是:

Johnny, you use.
Eye eager

我们的文字片段以单词“eager”结尾,因为“sun”不以“r”开头。

因此我们在输入文件(txt)中有多行文本和分隔符,我需要通过所有文本找到最大的文本片段。该文本片段包含单词和分隔符。

我甚至不知道从哪里开始,我想我必须使用像String.Length,Substring和String.Split这样的函数,也许Redex可能会派上用场,但我对Redex并不熟悉它还有它的功能。

我试图尽可能清楚地解释它,英语不是我的母语,所以它有点困难。

我的问题是:我应该使用什么样的算法来将我的文本分成单独的字符串,其中一个字符串包含一个单词和该单词后面的分隔符?

2 个答案:

答案 0 :(得分:0)

让我们创建算法:

  1. 使用while循环逐行读取文件。
  2. 使用拆分方法和逗号作为分隔符拆分行。
  3. 用于循环创建的数组,将arr [i]的最后一个字符与arr [i + 1]的第一个字符进行比较。
  4. 比较结束后计算单词长度
  5. 将当前长度与之前的长度进行比较,并保存最长的文本片段和较长的文本片段。
  6. 转到第2步重复此工作。
  7. 打印文本片段

答案 1 :(得分:0)

您需要执行以下操作:

  • 将文字拆分为单个单词
  • 比较单词的第一个和最后一个字母,看它们是否相同
  • 如果它们不相同,请返回原始文本并在遇到该单词之前获取初始文本片段。

执行此操作的一种方法如下:

String text = "Johnny, you use.\nEye eager sun.";

// Splits the text into individual words
String[] words = text.ToLower().Split(new String[] {" ", ",", ".", "\n"}, StringSplitOptions.RemoveEmptyEntries);

String lastLetter = text.ToLower()[0].ToString();
String newText = text;

// Checks to see if the last letter if the previous word matches with the first letter of the next word
foreach (String word in words)
{
    if (word.StartsWith(lastLetter))
    {
        lastLetter = word[word.Length - 1].ToString();
    }
    else
    {
        newText = text.Split(new String[] { word }, StringSplitOptions.RemoveEmptyEntries)[0]; // Split the original text at the location where the inconsistency happens and take the first text fragment.
        break;
    }
}

Console.WriteLine(text);
Console.WriteLine(newText);