2016-12-05 55 views
-3

晚上好。 所以我有一個文本文件,其中包含帶分隔符的多行文本。我需要找到條件最長的文本片段,該單詞的最後一個字母必須是後面的單詞的第一個字母。該文本片段可以繼續多行,而不僅僅是一行。查找帶條件的字符串數組中最長的文本片段

F.e.

我們有這個字符串數組:

Hello, obvious smile eager ruler. 
Rave, eyes 

我們的文字片段在「眼睛一句話結尾:

Hello, obvious smile eager ruler. 
Rave, eyes, random. 
從這兩行我們得到了我們的文字片段會

所以「因爲」隨機「不以」s「開頭。

從我們的txt文件,接下來的兩行:

Johnny, you use. 
Eye eager 

我們的文字片段結束於:

Johnny, you use. 
Eye eager sun. 
這兩個其他線路我們得到了我們的文字片段會

所以因爲「太陽」不是以「r」開頭,所以詞「渴望」。

因此,我們在輸入文件(txt)中有多行文本和分隔符,我需要通過所有文本找到最大的文本片段。該文本片段包含單詞和分隔符。

我甚至不知道從哪裏開始,我想我將不得不使用像String.Length,Substring和String.Split等函數,也許Redex可能會在那裏得心應手,但我並不是很熟悉Redex和它的功能呢。

我試圖儘可能清楚地解釋它,英語不是我的母語,所以它有點困難。

我的問題是:應該使用什麼樣的algorythm將我的文本分解爲單獨的字符串,其中一個字符串包含一個單詞並在該單詞之後包含分隔符?

+0

你知道這些分隔什麼?你想,例如,結束時期? – Iluvatar

+0

分離器是。和空的空間 我需要知道哪條線,並在該行的文本片段開始說(在我們的文本片段中的第一個單詞的第一個字母)的哪一部分,並在該線,並將該行它結束的部分( – feco

+0

我會考慮將其分解成單詞序列,找到有效的子序列,然後評估這些子序列的長度並尋找最長的序列。 – Iluvatar

回答

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); 
+0

的全過程,我得到了這一切工作,增加了一些更多的修改,它是完美的工作,感謝您的巨大的幫助! – feco

0

讓我們創建的算法:用while循環通過線

  1. 讀取文件中的行。
  2. 通過使用拆分方法和逗號作爲分隔符來拆分行。
  3. 用於循環創建的數組以比較arr [i]的最後一個字符與arr [i + 1]的第一個字符。
  4. 比較完成後字數的長度
  5. 比較當前長度與上一個長度並保存最長的一個和較長的文本片段。
  6. 轉到第2步重複此工作。
  7. 打印文本片段
+0

我認爲正確的答案應該是'去問問你的導師,並告訴他們,你不明白的編碼assignment' VS希望有人在這裏做的工作爲他們.. – MethodMan

+0

感謝您的幫助!你們幫助我很多瞭解使用/分割字符串,並比較它們 – feco

相關問題