функция левой строки в C #

Как лучше всего вернуть первое слово строки в C #?

Обычно, если строка «привет, мир» , мне нужно получить «привет» .

Спасибо

19
задан jwg 8 May 2013 в 15:33
поделиться

6 ответов

Вы можете использовать комбинацию Substring и IndexOf.

var s = "Hello World";
var firstWord = s.Substring(0,s.IndexOf(" "));

Однако это не даст ожидаемого слова, если входная строка содержит только одно слово, поэтому необходим особый случай.

var s = "Hello";
var firstWord = s.IndexOf(" ") > -1 
                  ? s.Substring(0,s.IndexOf(" "))
                  : s;
24
ответ дан 30 November 2019 в 01:50
поделиться

Один из способов — искать пробел в строке и использовать положение пробела для получения первого слова:

int index = s.IndexOf(' ');
if (index != -1) {
  s = s.Substring(0, index);
}

Другой способ — использовать регулярное выражение для поиска граница слова:

s = Regex.Match(s, @"(.+?)\b").Groups[1].Value;
8
ответ дан 30 November 2019 в 01:50
поделиться
string words = "hello world";
string [] split = words.Split(new Char [] {' '});
if(split.Length >0){
 string first = split[0];
}
0
ответ дан 30 November 2019 в 01:50
поделиться

Вы можете попробовать:

string s = "Hello World";
string firstWord = s.Split(' ').First();

Комментарий Охада Шнайдера верен, поэтому вы можете просто запросить элемент First(), так как всегда будет как минимум один элемент.

Для получения дополнительной информации о том, следует ли использовать First() или FirstOrDefault(), вы можете узнать больше здесь

47
ответ дан 30 November 2019 в 01:50
поделиться

Ответ of Jamiec является наиболее эффективным, если вы хотите разделить только пробелы. Но, просто ради разнообразия, вот еще одна версия:

var  FirstWord = "Hello World".Split(null, StringSplitOptions.RemoveEmptyEntries)[0];

В качестве бонуса она также распознает все виды экзотических пробельных символов и будет игнорировать несколько последовательных пробельных символов (фактически он обрезает начальные символы). /конечный пробел в результате).

Обратите внимание, что символы также будут считаться буквами, поэтому, если ваша строка имеет вид Hello, world! , он вернет Здравствуйте,. Если вам это не нужно, то передайте массив символов-разделителей в первом параметре.

Но если вы хотите, чтобы он был на 100 % надежным на всех языках мира, то это будет непросто...

3
ответ дан 30 November 2019 в 01:50
поделиться

Обрабатывает различные пробельные символы, пустую строку и строку из одного слова.

private static string FirstWord(string text)
{
    if (text == null) throw new ArgumentNullException("text");

    var builder = new StringBuilder();

    for (int index = 0; index < text.Length; index += 1)
    {
        char ch = text[index];
        if (Char.IsWhiteSpace(ch)) break;

        builder.Append(ch);
    }

    return builder.ToString();
}
1
ответ дан 30 November 2019 в 01:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: