Diskuze: Zjištění počtu slov z TXT

C# .NET .NET (C# a Visual Basic) Zjištění počtu slov z TXT American English version English version

Avatar
Veganekk
Člen
Avatar
Veganekk:

Chci se zeptat jak na zištění počtu slov z textového dokumentu ?
Mockrát děkuju za radu.

Odpovědět 9.3.2013 12:46
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na Veganekk
Theodor Johnson:

Musis si nacist dokument do stringu a pak pomoci foreach pocitat mezery

Nahoru Odpovědět 9.3.2013 12:59
Přecházím na "Cross-Platform Development"
Avatar
Veganekk
Člen
Avatar
Veganekk:

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

Nahoru Odpovědět 9.3.2013 13:05
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na Veganekk
Theodor Johnson:

mel by jsi ty mezery pocitat jako

if (soucasnyZnak == ' ' || soucasnyZnak == '\n')
     pocetSlov++;
Nahoru Odpovědět  +2 9.3.2013 13:10
Přecházím na "Cross-Platform Development"
Avatar
Pleto
Redaktor
Avatar
Pleto:

a ešte by si mal dávať pozor na to, keď máš v tom súbore niekoľko medzier za sebou (preklep/tabu­látor)...

 
Nahoru Odpovědět 9.3.2013 14:15
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na Pleto
Theodor Johnson:

tabulator != mezera, tabulator ma znak \t

Nahoru Odpovědět 9.3.2013 14:34
Přecházím na "Cross-Platform Development"
Avatar
Pleto
Redaktor
Avatar
Odpovídá na Theodor Johnson
Pleto:

máš pravdu, ale nie je nič nezvyčajné, že keď stlačíš tabulátor, tak to miesto neho hodí 4 medzery...

 
Nahoru Odpovědět  +1 9.3.2013 15:07
Avatar
Mediel
Redaktor
Avatar
Odpovídá na Pleto
Mediel:

To by se dalo osetrit nejakou vnorenou podminkou, kde bys kontroloval, zda dalsi znak za mezerou je mezera, pokud ano, tak ho asi ignorovat :)

Nahoru Odpovědět 9.3.2013 19:35
Nechci vám ukazovat, jak dobrý jsem já ... Chci vám ukázat, jak dobrý můžete být vy ... Když uvěříte ... V sami sebe...
Avatar
Veganekk
Člen
Avatar
Veganekk:

Trosku Nechapu.... Nemohl by to nekdo sepsat zase jsem se totalne ztratil.... Vubec nevim co myslite

Nahoru Odpovědět 9.3.2013 20:38
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Veganekk
Člen
Avatar
Veganekk:

Jinak to co poradil loapmail nefunguje jak ma... pocita to slova blbe :/

Nahoru Odpovědět 9.3.2013 20:44
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Veganekk
David Čápka:

"Počítá to blbě" - co ti na tohle máme odpovědět? Řešíš třeba prázdné řádky?

Nahoru Odpovědět 9.3.2013 20:52
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Veganekk
Člen
Avatar
Veganekk:

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++;
}**

}**
Nahoru Odpovědět 9.3.2013 20:58
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Veganekk
David Čápka:

Ř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.

Nahoru Odpovědět 9.3.2013 21:00
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Veganekk
Člen
Avatar
Veganekk:

bohuzel nepomohlo furt mam o jedno vice
:( Asi bude chby ze na novem radku je mezera pred slovem... Mohlo by to byt ono ?

Editováno 9.3.2013 21:05
Nahoru Odpovědět 9.3.2013 21:03
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Veganekk
David Čápka:

Nahoře jsi uvedl 7 slov a napsal že ti to vypisuje 6. 6 + 1 by mělo být 7.

Nahoru Odpovědět 9.3.2013 21:03
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Veganekk
Člen
Avatar
Veganekk:

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 ... :(

Editováno 9.3.2013 21:07
Nahoru Odpovědět 9.3.2013 21:06
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
David Čápka
Tým ITnetwork
Avatar
Nahoru Odpovědět 9.3.2013 21:07
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Veganekk
Člen
Avatar
Veganekk:

Zkousel jsem to ale moje podminka nejde bohuzel :(

Nahoru Odpovědět 9.3.2013 21:08
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Mediel
Redaktor
Avatar
Odpovídá na Veganekk
Mediel:

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;
    }
Nahoru Odpovědět  +1 9.3.2013 21:15
Nechci vám ukazovat, jak dobrý jsem já ... Chci vám ukázat, jak dobrý můžete být vy ... Když uvěříte ... V sami sebe...
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Mediel
David Čápka:

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.

Nahoru Odpovědět  +1 9.3.2013 21:22
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Mediel
Redaktor
Avatar
Odpovídá na David Čápka
Mediel:

To moje funguje take dobre :) Zvlaste to s tim regex :) je to kratke a efektivni :)

Nahoru Odpovědět 9.3.2013 21:23
Nechci vám ukazovat, jak dobrý jsem já ... Chci vám ukázat, jak dobrý můžete být vy ... Když uvěříte ... V sami sebe...
Avatar
Veganekk
Člen
Avatar
Veganekk:

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.

Nahoru Odpovědět 9.3.2013 21:23
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Mediel
Redaktor
Avatar
Odpovídá na Veganekk
Mediel:

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 :)

Nahoru Odpovědět 9.3.2013 21:30
Nechci vám ukazovat, jak dobrý jsem já ... Chci vám ukázat, jak dobrý můžete být vy ... Když uvěříte ... V sami sebe...
Avatar
Veganekk
Člen
Avatar
Veganekk:

Ok zkusim. JEn mohl bys mi kdyztak napsat sem co znamena (IsWhiteSpace,..) a ty dalsi. nebo nekam kde si to mohu najit a procist? Byl bych vdecny. Dekuju

Nahoru Odpovědět 9.3.2013 21:32
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Mediel
Redaktor
Avatar
Odpovídá na Veganekk
Mediel:

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 :)

Nahoru Odpovědět 9.3.2013 21:44
Nechci vám ukazovat, jak dobrý jsem já ... Chci vám ukázat, jak dobrý můžete být vy ... Když uvěříte ... V sami sebe...
Avatar
Veganekk
Člen
Avatar
Veganekk:

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

Nahoru Odpovědět 9.3.2013 21:55
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 26 zpráv z 26.