Diskuze: Zjištění počtu slov z TXT
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 26 zpráv z 26.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Musis si nacist dokument do stringu a pak pomoci foreach pocitat mezery
Dik zkusim a uvidime jak to pujde...
Jen se chci zeptat kolik mezer ma
'\n'
Kdyz chci pocitat znaky v TXT tak mi to zlobi....
Musim z znaku odecist jestli se nepletu, Tak MEZERY a NOVY RADEK ale nejak mi to
zlobi vzdy to mam o 1 - 2 cisla vic nebo min
mel by jsi ty mezery pocitat jako
if (soucasnyZnak == ' ' || soucasnyZnak == '\n')
pocetSlov++;
a ešte by si mal dávať pozor na to, keď máš v tom súbore niekoľko medzier za sebou (preklep/tabulátor)...
tabulator != mezera, tabulator ma znak \t
máš pravdu, ale nie je nič nezvyčajné, že keď stlačíš tabulátor, tak to miesto neho hodí 4 medzery...
To by se dalo osetrit nejakou vnorenou podminkou, kde bys kontroloval, zda
dalsi znak za mezerou je mezera, pokud ano, tak ho asi ignorovat
"Počítá to blbě" - co ti na tohle máme odpovědět? Řešíš třeba prázdné řádky?
Toto mam v txt a kdyz pocitam slovo tak to vypisuje pocet slov 6. Tabulator jsme nepouzil takze nevim kde je chyba
aho ahoj
jo jo
ne ne
ano
podminka je v foreach cyklu
int pocetslov=0;
string s="nacitam do ni do souboru pomoci STREMREADRU";
foreach(char znak in s)
**{
if(znak==' ' || znak=='\n')
**{
pocetslov++;
}**
}**
Řekl bych že je tam vždy o 1 slovo více, jelikož na konci posledního řádku není \n. Stačí tedy na konci k výsledku přičíst 1.
Nahoře jsi uvedl 7 slov a napsal že ti to vypisuje 6. 6 + 1 by mělo být 7.
bohuzel nepomohlo furt mam o jedno vice
Asi bude chby ze na novem radku je mezera pred slovem... Mohlo by to byt ono ?
jen me nenapada jak to osetrit ...
Mozna, by pomohlo vice se nad tim zamyslet, nez ocekavat, ze to nekdo vyresi za tebe... Ted jsem k tomu sednul a hle, vysledek je doma:
/// <summary>
/// Počítní slov pomocí cysklu a podmínek.
/// </summary>
public static int CountWords2(string s)
{
int c = 0;
for (int i = 1; i < s.Length; i++)
{
if (char.IsWhiteSpace(s[i - 1]) == true)
{
if (char.IsLetterOrDigit(s[i]) == true ||
char.IsPunctuation(s[i]))
{
c++;
}
}
}
if (s.Length > 2)
{
c++;
}
return c;
}
nebo:
/// <summary>
/// Počítání slov pomocí regex výrazu.
/// </summary>
public static int CountWords1(string s)
{
MatchCollection collection = Regex.Matches(s, @"[\S]+");
return collection.Count;
}
Stačí jet po znaku a pamatovat si jeslti jsi ve slově nebo ne. Mít pole znaků co jsou "mimoslovní". Napsal bych to sem, ale nemám teď čas.
To moje funguje take dobre
Zvlaste to s tim regex
je to
kratke a efektivni
Tak promin ale snazim se nejvic co to jde ale bohuzel mi to nejde. Asi je to moje chyba ale to co jsme napsal nejde.A neznam nejaky IsWhiteSpace. Snazil jsme se to vyresit pomoci toho co umim ale i tak bud to pocitalo o 1 vic ci min tak promin ze jsem takovej DEBIL.
Nic se nedeje Jen proste
asi by me vice zaujalo, kdyby jsi sem prisel s nejakou analyzou problemu...
Tohle je uplne krasna algoritmizacni uloha k procvicovani hlubsiho uvazovani...
A kdyz se nad tim logicky clovke zamysli a udela si treba i tabulku promennych a jak to asi v tom cyklu vypada, tak na to po chvilce prijde...
A nemyslim si, ze jsi debil
Naopak, mas snahu
Zkus si
projit tu horni metodu a napsat si k ni komentare
Z nazvu je to patrne...
IsWhiteSpace = Označuje, zda zadaný znak Unicode se dělí na prázdné
místo.
IsLetterOrDigit = Označuje, zda je zadaný znak Unicode dělí písmeno nebo
desítkové číslice.
IsPunctuation = Označuje, zda je zadaný znak Unicode dělí interpunkční
znaménko.
Jak jsem k tomuto podrobnemu popisu prisel? Vzal jsam kazdy ten vyraz,
napriklad IsWhiteSpace a okopiroval ho do google A ten mi hned jako prvni odkaz
ukazal toto: http://msdn.microsoft.com/…tespace.aspx Coz je napoveda
primo od Microsoftu
Děkuju... za vyvětlení a
pomoc. Příště než přidám příspěvek tak si ten problem u kterého se
seknu nechám projít hlavou dýl a snad za tu delší dobu kápnu na to.
Děkuji všem za pomoc
Zobrazeno 26 zpráv z 26.