Извлечение первого токена из разделенной строки - PullRequest
4 голосов
/ 09 июня 2009

у меня есть строка: например WORD1_WORD2_WORD3

как мне получить только WORD1 из строки? то есть текст перед первым подчеркиванием

Ответы [ 5 ]

10 голосов
/ 09 июня 2009

Может быть заманчиво сказать 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('_');
9 голосов
/ 09 июня 2009
YOUR_STRING.Split('_')[0]

Фактически метод Split возвращает массив строк, полученных в результате разделения исходной строки при любом появлении указанного символа (ов), не включая символ, при котором было выполнено разделение.

7 голосов
/ 09 июня 2009

, если s - строка:

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

if (idx >= 0)
  firstPart = s.Substring(0,idx);
1 голос
/ 09 июня 2009

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

должен вернуть "WORD1". Если это не работает, попробуйте .Spilt () для строковой переменной с указанным вами содержимым.

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

Это на самом деле возвращает массив:

{"WORD1", "WORD2", "WORD3"}
0 голосов
/ 09 июня 2009

Есть несколько способов. Вы можете использовать Split, Substring. и т. д. Пример с Split:

String var = "WORD1_WORD2_WORD3";

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...