Может быть заманчиво сказать Split
- но это включает в себя создание массива и множества отдельных строк. ИМО, оптимальный способ здесь - найти первое подчеркивание и взять подстроку:
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('_');