从分隔的字符串中提取第一个标记

rak*_*los 4 c# string

我有一个字符串:例如 WORD1_WORD2_WORD3

我怎么从字符串中得到WORD1?即第一个下划线之前的文本

Mar*_*ell 10

它可能很诱人Split- 但这涉及到创建一个数组和许多单独的字符串.IMO,这里的最佳方法是找到第一个下划线,并取一个子串:

string b = s.Substring(0, s.IndexOf('_')); // assumes at least one _
Run Code Online (Sandbox Code Playgroud)

(编辑)

如果你这样做,你可以添加一些扩展方法:

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;
}
Run Code Online (Sandbox Code Playgroud)

然后:

string s = "a_b_c";
string b = s.SubstringBefore('_'), c = s.SubstringAfter('_');
Run Code Online (Sandbox Code Playgroud)


em7*_*m70 9

YOUR_STRING.Split('_')[0]
Run Code Online (Sandbox Code Playgroud)

事实上,Split方法返回一个字符串数组,这些字符串是在任何指定字符出现时拆分原始字符串而产生的,不包括执行拆分的字符.


Phi*_*ert 7

如果s是字符串:

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

if (idx >= 0)
  firstPart = s.Substring(0,idx);
Run Code Online (Sandbox Code Playgroud)