Witam.
Szukałem po internecie i nigdzie nie mogę znaleźć jak pobrać pierwsze litery z łańcucha tekstowego.
np:
temp = 4programmers is the best
1stletters =4itb
z góry dzięki
Witam.
Szukałem po internecie i nigdzie nie mogę znaleźć jak pobrać pierwsze litery z łańcucha tekstowego.
np:
temp = 4programmers is the best
1stletters =4itb
z góry dzięki
string wth = "nie umiem jeszcze programować, ale bardzo chcę.";
char pierwszaLitera = wth[0];
massther napisał(a)
string wth = "nie umiem jeszcze programować, ale bardzo chcę.";
char pierwszaLitera = wth[0];
Temat brzmi "pobieranie pierwszych liter ze wszystkich wyrazów w stringu" a nie tylko pierwszego...
Jak się jest ignorantem to podpowiedzi też się nie rozumie. A szukać to ty niczego chyba nie umiesz. Przeczytaj chociaż pierwsze 4-5 rozdziały jakiejś książki do C# i byś wiedział.
string wtf = "nie umiem jeszcze programować, ale bardzo chcę.";
List<char> pierwszeLitery = new List<char>();
string[] wyrazy = wtf.Split(' ');
foreach(string wyraz in wyrazy)
pierwszeLitery.Add(wyraz[0]);
Tak, tak, zaraz będzie że co jak są dwie spacje między wyrazami, czy znaki końca linii etc. Cóż wszystkiego na tacy nie będzie, trzeba samemu trochę ruszyć główką.
może tak:
w pętli for pobierasz 1 literę Twojego wyrazu, "czekasz" aż pętla dojdzie do białego znaku[spacji], pobierasz znak za białą spacją, i tak do końca stringu ;D
użyj metody System.String.IndexOf do wyszukania spacji
http://msdn.microsoft.com/en-us/library/5xkyx09y.aspx
albo lepiej podziel string na tablicę stringów - funkcja Split i wtedy każdy element tablicy to będzie jeden wyraz.
EDIT: trochę się widzę spóźniłem z odpowiadaniem ;]
EDIT2:
przy split użyj opcji StringSplitOptions.RemoveEmptyEntries żebyś nie miał pustych wyrazów w przypadku wystąpienia więcej niż jednej spacji między wyrazami
pierwszeLitery.Add(wyraz[0]);
to się wykaszani na egipskich hieroglifach, które zajmują dwa chary jeden. nie żeby to było szczególnie istotne, „no chyba że”.
Azarien napisał(a)
to się wykaszani na egipskich hieroglifach, które zajmują dwa chary jeden
Spoko, spoko, jak nam MSDN tłumaczy:
The value of a Char object is its 16-bit numeric (ordinal) value
Zatem są to dwa bajty, nie dwa chary :)
Co do problemu właściwego: pomóc mogą też wyrażenia regularne.
string ptrn = @"\s*(.)\w+",
input = "cep cepa cepem pogania",
firstLetters = "";
foreach (Match m in Regex.Matches(input, ptrn))
{
if (m.Success)
firstLetters += m.Groups[1].Value;
}
MessageBox.Show(firstLetters);
Wyrażenie regularne mówi, że najpierw sprawdzamy białe znaki, które jednak nie są konieczne (dopasowanie tych wyrazów na początku stringu). Następnie przechwytujemy jeden znak (ta kropka w nawiasach), dalej cała reszta słowa.
Azarien:to się wykaszani na egipskich hieroglifach, które zajmują dwa chary jeden
Spoko, spoko, jak nam MSDN tłumaczy:
The value of a Char object is its 16-bit numeric (ordinal) value
Zatem są to dwa bajty, nie dwa chary :)
Dwa bajty są normalnie. Azarien nie przejęzyczył się i miał na myśli dwa chary czyli parę surgoatów - jak nam msdn tłumaczy, funkcja http://msdn.microsoft.com/en-us/library/xcwwfbb8.aspx do czegoś musi w końcu służyć...
Co do zadania - jeszcze LINQ nie było:
s.Split(' ').Select((x) => x[0])
Wygrałem.