2015-04-03 68 views
1

我有一個字符串getallairlinedetails。在指定的字符串之間沒有空格或分隔符。我如何分割這樣的字符串:「獲取所有航空公司的詳細信息」如何拆分C#中指定字符串的單詞?

+3

我沒有看到任何模式來分割它。 – 2015-04-03 08:36:18

+0

是否有任何可能的方式,我可以從這個字符串像航空公司得到的話或得到 – 2015-04-03 08:40:11

+0

無論如何看看'String.Split'重載或其他'字符串'方法.. – 2015-04-03 08:41:48

回答

0

這是不可能的。 Split方法至少需要一個字符,比如空格,以便分割字符串。否則,沒有任何標準將字符串拆分爲一組子字符串。

在嘗試選擇類型的方法來解決問題之前,請考慮問題。你會如何分割這個字符串?你的算法是什麼?

想想後者,很快你會意識到你根本無法分裂它,因爲你沒有任何可以依賴的東西。

例如,你的情況,如果字符串是這樣的:

"get_all_airline_details" 

它會一直明確表示,所有的話都彼此分開了_。因此,從左到右,您會在第一個_處找到第一個單詞的結尾。然後,第二個單詞將在此_之後開始,並將在第二個_等結束,等等。

當然這被認爲你會發現當你會注意到這個字符串。如果你想在C#中分割它,你可以使用字符串的分割方法傳遞這個字符_。然而,上述的結論是,我們應該先找到一個「模式」,然後嘗試分割字符串。那麼你將使用哪種語言來做到這一點,這並不重要。

+0

它似乎是一個評論 – 2015-04-03 08:37:18

+2

@SaiKalyanKumarAkshinthala這是我的第一個想法。但是,我再次想到了這一點,我意識到這是唯一可以解決這個問題的答案。 – Christos 2015-04-03 08:38:35

+0

有沒有什麼辦法可以從這個字符串中得到這樣的單詞:get – 2015-04-03 08:39:05

4

由於這裏沒有明顯的拆分模式,因此沒有可靠的方式供您使用。

但是,如果您的單詞溢出不是很大 - 您可以嘗試創建一些字典,然後使用該字典進行分割。

你可以嘗試從字典

word_from_dictionary => " " + word_from_dictionary + " " 

和拆分使用空間作爲分隔符由String.Split得到的字符串在字符串中的每個字代替。

例如,讓你的字典包含單詞「get」,「all」和「details」。

然後,通過替換字典中的所有單詞,您將獲得get all airline details - 這可以被拆分。

當然,這不是一個非常可靠的方式,因爲它取決於你需要以某種方式填充字典。

+0

另外,如果字典同時包含「航空公司」和「空中」,那麼你不想拆分「航空公司」。 – 2015-04-03 08:57:51

+0

@HansKesting當然。其實它暗含在「*它是不是非常可靠的方式,因爲它取決於字典*」太...感謝重音這個問題。 – 2015-04-03 09:00:35

+0

鑑於一般來說這是一個壞主意,我不確定使用「Contains」作爲你的建議是一個好主意,而不是試圖從左到右查找單詞,並在你找不到一個單詞時停止。顯然這樣你就需要一個完整的字典,而不是像你所建議的那樣是一部分字典。因此,考慮到「get all airline」和「getallairlinedetails」這兩個詞,你開始使用'StartsWith'查找並刪除找到的單詞。 – xanatos 2015-04-03 10:26:51

1
public static List<string> Dict = new List<string> { "details", "airline", "all", "get" }; 

    static void Main(string[] args) 
    { 
     String s = "getallairlinedetails"; 

     Console.WriteLine(ReturnSplitString(s)); 

     Console.ReadLine(); 
    } 

    public static string ReturnSplitString(string s) 
    { 
     string[] ww = new string[s.Length]; 

     foreach (string word in Dict) 
     { 
      if (s.Contains(word)) 
      { 
       int ind = s.IndexOf(word); 
       ww[ind] = word; 
      } 
     } 

     string sf = ""; 

     foreach (string sr in ww) 
     { 
      if (sr != null) 
       sf += sr + " "; 
     } 

     return sf.TrimEnd(' '); 
    } 

這樣的事情將是你唯一的選擇,遍歷包含個別字的字典,由他們在字符串中的位置將它們存儲,然後再加入數組了在年底才能。

該代碼正確返回的方式,只是改變s並添加任何單詞到字典將返回不同的單詞。

沒有辦法做到這一點,至少沒有知道你在尋找什麼,雖然是問題。