2011-02-24 69 views
1

是否可以將此組合單詞拆分爲兩個? 例如:「名字」,以 「第一」 「名稱」c#拆分語句

我有一大堆的屬性,例如名字,姓氏等,我需要我的網頁上顯示這一點。這就是爲什麼我需要分開這個屬性名稱來顯示更合適的方式。

+1

這是可能的,但你將不得不解釋算法。我的意思是什麼邏輯?例如,你會如何分割下面的輸入'Ddjkfhsdks'?如果沒有明確的問題描述,您就看不到明確的功能。 – 2011-02-24 10:59:17

+2

*只有那個單詞*?如果是這樣,那麼's.substring(0,5)'和's.substring(5,4)'會做,或者只是:'string s1 =「First」;字符串s2 =「名稱」;'你需要更具體地說明你想要做什麼。 – 2011-02-24 10:59:21

+0

單詞的任何部分是否有固定的長度? – Tamschi 2011-02-24 10:59:35

回答

0

除非你有所有的「單」的話,我能想到的唯一的辦法就是拆就上字母的字典:

姓 - >名

問題的UIFilter仍然存在 - > UI過濾器。

0

您可以使用substring從字符串中獲取前5個字符。然後replace原始字符串中的前五個字符爲空。

string str = "Firstname"; 
string firstPart = str.Substring(0,5); // "First" 
string secondPart = str.replace(firstPart,""); // "name" 

如果你想讓它一般用於被分裂的任何單詞,那麼你需要對你可以把單詞分成部分一些明確的標準。如果沒有明確的標準,就不可能像您期望的那樣分割字符串。

1

編輯: OP指定的,他需要分割財產名

如果按照首字母大寫命名約定的屬性(即「名字」,而不是「名字」),您可以拆分由大寫字母詞很容易。

string[] SplitByCaps(string input) 
{ 
    StringBuilder output = new StringBuilder(); 
    for (int i = 0; i < input.Length; i++) 
    { 
     char c = input[i]; 
     if (i > 0 && Char.IsUpper(c)) 
      output.Append(' '); 

     output.Append(c); 
    } 
    return output.ToString().Split(' ');   
} 

Orinal答案:

我會說,對於實際的目的,這是不可能爲任意字符串做到這一點。

當然,可以編寫一個程序來做到這一點,但無論您的實際需求是什麼,該程序將是矯枉過正的。也有可能已經有這樣的庫,但是它們會非常沉重,以至於你不想依賴它們。

任何能夠實現這一目標的程序都必須知道英語中的所有單詞(我們甚至不考慮多語言解決方案)。你還需要一個智能的詞法分析器,因爲對於任何單詞,可能有多種可能的方式來分解它。

我建議你看看其他方式來解決你的問題。

1

你的目標很模糊。
如果屬性總是有大寫字母,則可以在單詞中找到所有大寫字母的位置,並按該位置進行區分。
如果不保證大寫字母,最好的辦法是創建轉換表。該表將定義成對的初始屬性名稱和結果文本。通過這種方式,你將有簡單的轉換地圖