Как извлечь первые буквы из разных слов в строке в С#

Я хочу извлечь первую букву каждого слова в строке. Я много гуглил и все еще без какой-либо помощи.
Например, string text = "I Hate Programming";
Нужный ответ должен выглядеть так:

IHP

Я знаю, что вы, ребята, очень хороши, я просто новичок. Спасибо.


person gematt    schedule 03.05.2013    source источник
comment
Определите word. Это отдельные слова aaa-bbbb, aaa's, aaa_bbb, aaa@bbb?   -  person I4V    schedule 04.05.2013
comment
@I4V в его примерной строке вы можете видеть, что он определяет слово как отдельный элемент в массиве, разделенном пробелами.   -  person Christian Stewart    schedule 04.05.2013
comment
@ChristianStewart А как насчет I Hate Programming.I hate c#? Programming.I это одно слово?   -  person I4V    schedule 04.05.2013
comment
@I4V Да, учитывая, что там нет места :) Я цитирую английский язык.   -  person Christian Stewart    schedule 04.05.2013
comment
Мы здесь не для того, чтобы работать на вас, мы здесь, чтобы помочь вам. Если вы хотите научиться, докажите это, показав, что вы уже пробовали. Пометить этот вопрос как закрытый   -  person fotanus    schedule 04.05.2013


Ответы (3)


Если вы знаете, что ваш разделитель — это пробел, вы можете сделать следующее.

string text = "my text here";
string firstLetters = "";

foreach(var part in text.split(' ')){
    firstLetters += part.substring(0,1);
}

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

person Christian Stewart    schedule 03.05.2013
comment
Медленно, потому что конкатенация строк ужасна. - person SimpleVar; 04.05.2013
comment
Это действительно так, но это самый простой способ показать это. - person Christian Stewart; 04.05.2013
comment
Учитывая тот факт, что ОП — новичок, четкий и понятный фрагмент важнее соображений производительности. - person OnoSendai; 04.05.2013
comment
У меня был код для моего предыдущего вопроса. Я опубликую код. Спасибо за беспокойство. - person gematt; 04.05.2013

Немного LINQ:

string text = "I Hate Programming";
string firstLetters = 
    String.Join(String.Empty, text.Split(new[] {' '}).Select(word => word.First())) 

Если вы хотите включить символы like - и ' в качестве начала слов, просто добавьте их в список символов при вызове Split().

person Marty    schedule 03.05.2013
comment
Опять же, ему нужно знать, как работает теория, а не как это сделать в каком-нибудь красивом коде. Linq отлично подходит для опытных программистов, которые хотят сократить код, чтобы писать быстрее, но для новичка вам нужно показать теории, лежащие в основе кода, самым простым способом. - person Christian Stewart; 04.05.2013

person    schedule
comment
Linq очень удобен, и я тоже мог бы это написать, но это может сбить с толку тех, кто должен знать, как это работает, а не просто хороший способ сделать это. - person Christian Stewart; 04.05.2013
comment
Как это работает? Он работает так, как он описал. Он понимает логику. Логика проста. Ему нужна помощь с кодом. В любом случае вы можете избежать конкатенации строк даже без Linq. - person SimpleVar; 04.05.2013
comment
Ложь, он понятия не имеет, как работает логика. Я хочу извлечь первую букву каждого слова в строке. Я много гуглил и все еще без какой-либо помощи. - он не знает, КАК это сделать, он хочет это сделать, но, очевидно, лучше показать им, КАК... Если бы он знал, как это сделать, зачем бы он спрашивал? - person Christian Stewart; 04.05.2013
comment
В любом случае, теперь у него есть все ответы, которые ему понадобятся. Не нужно драться. Теперь он и понимает, и умеет это делать. - person SimpleVar; 04.05.2013
comment
he now has all the answers he's gonna need Если в качестве разделителя слов используется только пробел. - person I4V; 04.05.2013
comment
-1 за отсутствие объяснений - person fotanus; 04.05.2013
comment
@fotanus Возможно, вам не понравится ответ. но если это не неправильно и не вводит в заблуждение, возможно, что некоторые люди могут извлечь из этого пользу. Так что голосование против - это жестко. Я думаю, что могу найти много ответов/вопросов, чтобы понизить голосование, если я посмотрю на ваш профиль. - person I4V; 04.05.2013