» »

branje iz datoteke c#

branje iz datoteke c#

bigbada ::

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using System.IO;
using System.Text.RegularExpressions;
namespace Vaja1
{
    class Program
    {
        static void Main(string[] args)
        {
            string datoteka;
            while (true) 
            {
                Console.Write("Ime datoteke: ");
                datoteka = Console.ReadLine();
                if (File.Exists(datoteka))
                    break; 
                else Console.WriteLine("Datoteka s tem imenom ne obstaja!");
            }
            FileStream fs = new FileStream(datoteka, FileMode.Open, FileAccess.Read);
            
            StreamReader textIn = new StreamReader(fs);
            int znakov = 0;
            int besed = 0;
            while (textIn.Peek() != -1) 
            {
                string stavek = textIn.ReadLine(); 
                znakov = znakov + stavek.Length; 
            }
            textIn.Close(); 
            Console.WriteLine("Skupno število znakov v datoteki: " + znakov);
            Console.WriteLine("Skupno število besed v datoteki: " + besed);
            Console.ReadKey();

        }
    }
}


Moram narediti, da iz datoteke prebere število znakov in število besed. Za znake mi je nekako uspelo. Za besede pa nevem kako se naj lotim. Oz. kako naj preštejem besede.. Vejice in pike nadomestim s presledki, potem pa bi nekako moral prebrati do vsakega presledka in naprej.. Moram pa uporabiti metodo split in razred RegeX..
Any help?

hvala
  • spremenilo: bigbada ()

Kekec ::

Mitja Bonča ::

Dober primer - to je to.

bigbada ::

@"[\S]+" v tem primeru odstrani presledke.. vse kar ni presledek kao. Vejic pa ne odstrani in jih kar zraven šteje kot besede.. hmm

Zgodovina sprememb…

  • spremenilo: bigbada ()

keworkian ::

Ali pa uporabiš tale regex, meni je delal.
@"[^,.\s\?]+"

bigbada ::

Mogoče kdo ve kako je reg.izraz za vse črke in še ŠUMNIKE.
Poskusil sem @"[A-Za-z0-9]" in @"[A-Za-z0-9čČšŠžŽ]" pa ne gre. Ne najde mi šumnikov...

bigbada ::

Sem ze resil. Zanima me kako bi naredil, da bi mi iz ene datoteke(besede2.txt) prebralo vse besede in potem prebralo drugo datoteko(besede1.txt) in pogledalo, če se v njej nahajajo iste besede?

besede1.txt
blabla
avto
krneki
krneki
miza
miza

besede2.txt
avto
miza

Potem bi mi izpisalo, katere besede so iste in koliko jih je:
izpis:
avto 1
miza 2

Prosim za kanček pomoči, ker mi nikakor ne uspe niti začet. Najlazje je narediti z metodo .Matches, samo nevem kako.

Niron ::

Tudi jaz se zafrkavam s tem. Če ti kaj uspe naredit, please share with us!

dolenc ::

Idejno rešiš takole, dva readerja en bere eno datoteko en drugo.
Potem potrebuješ dve zanki, while bo uredu, ki preletita datoteki in sicer tako, greš v prvo, prebereš prvo besedo in prevrtiš drugo datoteko, če je beseda v prvi enaka besedi v drugi, povečaš nek števec in če je števec večji od 0, to besedo izpišeš in njen števec(da dobiš željeni izpis), potem se v prvi datoteki premakneš na drugo besedo in ponoviš postopek. Se pravi za vsako besedo v prvi preletiš vse besede v drugi in na koncu izpisuješ če imaš kaj. Zdej al boš primerjaj beseda1 = beseda2 ali pa uporabil matches je pa čisto po-željno.

bigbada ::

Hmm ja ideja zveni kul, vendar je problem, da recimo ima prva datoteka AVTO, AVTO.
v drugi pa je vpisano AVTO

Torej se nahaja vendar ne morem preverjati, ker AVTO, != AVTO .. Verjetno bi moral vse vejice in pike nadomestiti s presledki? Ali kako?

keworkian ::

A se besede v prvi datoteki ponavljajo?

ok nvm se ponavljajo.

Zgodovina sprememb…

bigbada ::

Ja

Evo datoteka z besedilom
PRODAM DVA PRAŠIČA. Tel. 02/682-67-41. (OJ34526/21/1)

PRODAM PRAŠIČA 200 KG, domače reje. Zg. Duplek. Tel. 02/681-0211. (OJ34529/21/1)

PRAŠIČE DOMAČE REJE, težke ca. 170-180 kg, prodam. Možnost kolin. Tel. 02/629-2250, 041 262 546. (OJ34531/21/1)

PRODAM PRAŠIČE 100-140 kg. Cena 1,30 EUR/kg in cisterno Creina 3200 l. Tel. 031 754-973. (OJ34534/21/1)

230 DELO

231 DOBI


Druga datoteka z besedami, ki se iščejo v prvi
PRODAM 
cisterno
KG

PRODAM mora najti 4x
kg 4x
cisterno 1x

Zgodovina sprememb…

  • spremenilo: bigbada ()

keworkian ::

Izvoli je napisan uber češko samo se mi ni dalo preveč komplicirat z raznim UTF-8 sranjem.

PS: pozabil še izpis!!!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Text.RegularExpressions;

namespace wordcompare
{
    class Program
    {
        static string dat = @"c:\vaja\compare\besede1.txt";
        static string dat2 = @"c:\vaja\compare\besede2.txt";
        static string regex = @"\w+";

        static void Main(string[] args)
        {
            string vals = File.ReadAllText(dat);
            string vals2 = File.ReadAllText(dat2);

            MatchCollection m1 = Regex.Matches(vals, regex);
            MatchCollection m2 = Regex.Matches(vals2, regex);

            Dictionary<string, int> w = new Dictionary<string, int>();

            for (int i = 0; i < m1.Count; i++)
            {
                for (int j = 0; j < m2.Count; j++)
                {
                    if (m1[i].Value.ToLower() == m2[j].Value.ToLower())
                    {
                        if (!w.ContainsKey(m1[i].Value.ToLower()))
                        {
                            w.Add(m1[i].Value.ToLower(), 1);
                        }
                        else
                        {
                            w[m1[i].Value.ToLower()] += 1;
                        }
                    }
                }
            }

            foreach (KeyValuePair<string, int> item in w)
            {
                Console.WriteLine("{0} {1}", item.Key, item.Value);
            }

            Console.ReadLine();
            
        }
    }
}

Zgodovina sprememb…

bigbada ::

Hvala, a lahko še samo poveš, kaj pomeni regularni izraz @"\w+" ?

darkolord ::

Malo manj češko:

string vals = File.ReadAllText(@"c:\vaja\compare\besede1.txt");
string vals2 = File.ReadAllText(@"c:\vaja\compare\besede2.txt");

var besede = vals.ToLower().Split(" ,.!?\r\n".ToCharArray());
var besede2 = vals2.ToLower().Split(" ,.!?\r\n".ToCharArray());

var w = besede.Where(b => besede2.Contains(b)).GroupBy(b => b); 

foreach (var item in w)
{
	Console.WriteLine("{0} {1}", item.Key, item.Count());
}
 
Console.ReadLine();

Zgodovina sprememb…



Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

c# seminarska

Oddelek: Programiranje
112180 (1853) tuned
»

[c#] Majhen problemček

Oddelek: Programiranje
10800 (608) darkolord
»

[c#] Ustvarjanje objekta v drugem razredu

Oddelek: Programiranje
81337 (1282) Cvenemir
»

Štetje besed v nizu (C#)

Oddelek: Programiranje
5936 (874) Spura
»

[c] Enaki datoteki

Oddelek: Programiranje
7820 (680) Spura

Več podobnih tem