2009-06-09 56 views

回答

9
YOUR_STRING.Split('_')[0]

事實上拆分方法返回從在指定字符(或多個)的任何發生分裂原始字符串所得字符串數組之前的文本,不包括字符在該分割被執行。

+0

正如Mark指出的那樣,這是一個非常低效的方法。 – 2009-06-09 12:16:54

+0

這只是最直接的方式,這是最直觀的方式,除非應用程序對性能至關重要,並且一遍又一遍地重複執行該操作,這並不重要。無論如何,我同意這不是具有最低執行時間的解決方案:) – em70 2009-06-09 12:32:46

+0

確保添加一些驗證,如果稍後動態執行它,則字符串中會有實際的'_':-) – 2009-06-09 22:03:48

1

("WORD1_WORD2_WORD3").Split('_')[0]

應該返回 「WORD1」。如果它不起作用,請使用指定的內容對字符串變量嘗試.Spilt()。

string str="WORD1_WORD2_WORD3"; 
string result=str.Split('_')[0]; 

這實際上返回數組:

​​
+0

您不需要括號內的字符串,你可以做「」.Split('_')[0]; – 2009-06-09 11:46:55

0

有幾種方法。你可以使用Split,Substring。以Split爲例:

String var =「WORD1_WORD2_WORD3」;

String result = var.Split('_')[0];

10

說出Split可能很誘人 - 但涉及創建一個數組和大量單個字符串。 IMO,這裏的最佳辦法是找到第一個下劃線,並採取子:

string b = s.Substring(0, s.IndexOf('_')); // assumes at least one _ 

(編輯)

如果你正在做這個地段,你可以添加一些擴展方法:

public static string SubstringBefore(this string s, char value) { 
    if(string.IsNullOrEmpty(s)) return s; 
    int i = s.IndexOf(value); 
    return i > 0 ? s.Substring(0,i) : s; 
} 
public static string SubstringAfter(this string s, char value) { 
    if (string.IsNullOrEmpty(s)) return s; 
    int i = s.IndexOf(value); 
    return i >= 0 ? s.Substring(i + 1) : s; 
} 

則:

string s = "a_b_c"; 
string b = s.SubstringBefore('_'), c = s.SubstringAfter('_'); 
7

如果小號是字符串:

int idx = s.IndexOf('_'); 

if (idx >= 0) 
    firstPart = s.Substring(0,idx);