2016-12-01 60 views
0

我需要找到符合條件,這些話不應該比「X」C#。我需要找到在每行最短的詞語(從文件)

例如短每行最短的話是這樣的數據:

它推廣20世紀60年代與含Lorem存有通道Letraset張 的釋放,以及最近與桌面 排版軟件一樣的Aldus PageMaker中包括Lorem存有版本

一nd如果我寫例如x = 5;

的結果應該是:

的Lorem

奧爾德斯

的Lorem

我知道如何找到剛纔最長的單詞和與條件,但如何最短而已不要:

static string Longest(string line, char[] s, int x) 
    { 
     string[] parts =line.Split(s,StringSplitOptions.RemoveEmptyEntries); 
     string longg = ""; 
     foreach (string word in parts) 
      if (word.Length >=longg.Length) 
       longg = word; 
     return longg; 
    } 

回答

0

這將檢查每個單詞,並將返回大於或等於x且短於shortWord的單詞。

static string Shortest(string line, char[] s, int x) 
{ 
    string[] parts =line.Split(s,StringSplitOptions.RemoveEmptyEntries); 
    string shortWord = ""; 
    foreach (string word in parts) 
     if (word.Length >= x && (shortWord.Length == 0 || word.Length < shortWord.Length)) 
      shortWord = word; 
    return shortWord; 
} 

更新

這是一個函數,它接受一個字和字母的陣列,並返回存在於字的第一個字母。

static char GetLetter(string word, char[] letters) 
{ 
    foreach(var c in word) 
     if (letters.Contains(c)) return c; 
    return '\0';  // return a default letter if no letters was found. 
} 

你可以這樣稱呼它(GetLetter("Lorem", new char[] {'a', 'e', 'o'}))。當你收到那封信(即"Lorem"o),你可以找到含有該字母如下所有單詞:

List<string> result = new List<string>(); 
foreach (var word in line) 
{ 
    if (word.Contains(c)) result.Add(word);  // c is the letter 
} 
return result; 
+0

非常感謝你。我很抱歉太多問,但我怎麼能找到這些行中有最短單詞元音字母的另一個單詞。例如char []字母= {'a','e','u','i','o','y','A','E','I','Y','O ','U'};第一個詞是Lorem,所以它有第一個元音字母'o',程序應該在第一行找到所有字母都是'o'的字母。 – Ekli

+0

@Ekli我不確定你想要什麼,但是如果你需要一個包含特定字母的單詞,你可以簡單地使用'if(word.Contains(c))',其中'c'是你的字母'重新尋找。 –

+0

感謝您的幫助。 但是如果我不知道我在找什麼字母。 就像我說的,如果最短的單詞有任何這些字母('a','e','u','i','o','y','A','E','I', 'Y','O','U'); 例如,單詞「Lorem」有'o'和(ofcourse'e',但我需要首先出現的字母)。所以我需要找到其他字母'o'。所以如果我的第一行是(「它在20世紀60年代隨着包含Lorem Ipsum的Letraset表單的發佈而普及) 我的結果應該顯示所有包含'o'的單詞。我不知道如何更清楚地澄清。對不起,我的英語不好。 – Ekli

1

您可以使用Linq來做到這一點。

return parts.Where(w => w.Length >= x).OrderBy(w => w.Length).FirstOrDefault(); 

會得到你的長度至少xnull如果沒有符合要求的最短字。如果您想要一個空字符串而不是null,則可以在末尾添加?? string.Empty

相關問題