2009-06-09 70 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);