Diskuze: Vyhledání slova v poli

C# .NET .NET (C# a Visual Basic) Vyhledání slova v poli American English version English version

Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Daniel Vítek:

Zdravím, dá se nějak zjistit jestli se v nějakém poli nachází určité slovo ? např.

string[] mojepole = new string[10];
string mujtext = "devbook";
if(mujtext je v mojepole)
{
MessageBox.Show("Je tam !!!!!!!");
}
else
{
MessageBox.Show("Neni......");
}
 
Odpovědět 22.10.2012 8:52
Avatar
Odpovídá na Daniel Vítek
David Jančík [sczdavos]:

Buďto to projet cyklem a nebo použít LINQ. Něco jako

int[] i = new int { 1, 5, 8, 7 };
i.Any(item => item > 5);

string[] s = new string { "ahoj", "cau" };
s.Any(item => item == "ahoj");

Zkus a dej vědět. Je to jen momentální nápad, nezkoušel jsem.

Nahoru Odpovědět 22.10.2012 9:00
Čím více času dostaneš, tím méně ho máš.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Daniel Vítek
matesax:

Použij list... :) (Můžeš pomocí Linq - ale to mi přijde zbytečné - jakmile něco takového chceš, tak to stejně asi hodláš používat jako list...)

 
Nahoru Odpovědět 22.10.2012 9:03
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na David Jančík [sczdavos]
Daniel Vítek:

Co znamená to item => item == "ahoj" ??
Dobrá, prozradím svůj nápad - něco zkouším a chci přiřadit každé klávese zvuk (ťuknutí) a chci rozlišit písmena a čísla od funkcí (caps lock, shift, control atp.) tak mě napadlo že si to dám do pole..
Pokud to bude v 1. poli ozve se ťuknutí,když to bude v 2. třeba zabzučení :D

Editováno 22.10.2012 9:05
 
Nahoru Odpovědět 22.10.2012 9:04
Avatar
Kit
Redaktor
Avatar
Nahoru Odpovědět 22.10.2012 9:11
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
 
Nahoru Odpovědět 22.10.2012 9:12
Avatar
Odpovídá na Daniel Vítek
David Jančík [sczdavos]:

Tak na tohle se Pole nehodí. Jak říkal Kit použij slovník. Do něj si uložíš klávesu a k ní přiřazený zvuk.
Dictionary<Keys,string> kde Keys bude klávesa a string cesta k souboru s hudbou.
Pak si dáš

if (x.ContainsKey(Keys.Escape))
   PlaySound(x[Keys.Escape]);
Nahoru Odpovědět 22.10.2012 9:18
Čím více času dostaneš, tím méně ho máš.
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na David Jančík [sczdavos]
Daniel Vítek:

Takže to bude nějak.....

Dictionary<Keys,string> seznamKlaves = new Dictionary<Keys,string>();
seznamKlaves.Add("a",Program.Properties.Resources.zvuk);
seznamKlaves.Add("b",Program.Properties.Resources.zvuk);
seznamKlaves.Add("c",Program.Properties.Resources.zvuk);
seznamKlaves.Add("d",Program.Properties.Resources.zvuk);
seznamKlaves.Add("e",Program.Properties.Resources.zvuk);
seznamKlaves.Add("escape",Program.Properties.Resources.zvuk2);
..........

??

 
Nahoru Odpovědět 22.10.2012 9:25
Avatar
Odpovídá na Daniel Vítek
David Jančík [sczdavos]:

Tak já ti to napíšu a ty uděláš tohle?
Když dáváš jako klíč dat. typ Keys tak tam asi nebudeš dávat string to samý se zvukem. Božee.

seznamKlaves.Add(Keys.Escape, "C:\\Hudba\\Můj zvuk.wav");

A příště si to zkoušej. Tohle by ti VS omlátil vo hlavu.

Nahoru Odpovědět 22.10.2012 9:29
Čím více času dostaneš, tím méně ho máš.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Daniel Vítek
matesax:

První položka je klíč (druhá je jeho hodnota) - klíč používáš jako index - k tomu je slovník... (Dále můžeš odděleně vyhledávat jak v klíčích, tak v hodnotách)...

slovník[klíč] > hodnota

slovník.ContainsKey(klíč) ?
Editováno 22.10.2012 9:32
 
Nahoru Odpovědět 22.10.2012 9:31
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na David Jančík [sczdavos]
Daniel Vítek:

A co když mám ten zvuk v Resources ?

 
Nahoru Odpovědět 22.10.2012 9:36
Avatar
matesax
Redaktor
Avatar
Odpovídá na Daniel Vítek
matesax:

Tak je přeci jedno kde ho máš - prostě klíč bude klávesa, a hodnota zvuk. Osobně si myslím, že lepší to bude v složce sounds - i třeba nějak komprimované...

Také bych se vyhnul podmínkám a jiným větvením - prostě dej vstup jako index do slovníku a to do try bloku... (A to pak i využiješ pro jiné potřeby.)

Editováno 22.10.2012 9:42
 
Nahoru Odpovědět 22.10.2012 9:40
Avatar
Odpovídá na Daniel Vítek
David Jančík [sczdavos]:

Si tam ulož cestu do resources. Ale docela blbě se s tím pracuje. Bude lepší, když si uděláš složku zvuky u programu a tam je budeš mít. Nebo tu zas budeš zmatkovat, že ti to nejde.
Ale pokud chceš nuceně použít ty Resources tak tam dáš tu cestu co tam máš nebo se to ještě dělá nějak přes Assembly GetResource.
To musíš vyzkoušet. Takto jsem s tím zatím nikdy nepracoval.

Nahoru Odpovědět 22.10.2012 9:41
Čím více času dostaneš, tím méně ho máš.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Daniel Vítek
Kit:

Výjimky budou v tomto případě o něco rychlejší.

try {
   PlaySound(x[key]);
} catch (KeyNotFoundException) {
   PlaySound(defaultSound);
}

Pokud však ve slovníku budou pouze znaky, možná by se místo něho víc hodil Regex.

Nahoru Odpovědět 22.10.2012 9:49
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Kit
matesax:

Už jsem mu vyjímky navrhl... A zrovna jsem si to pořádně pročetl - a minimálně ten regex bych tu také uvítal...

 
Nahoru Odpovědět 22.10.2012 9:51
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na Kit
Daniel Vítek:

Nakonec jsem zjistil že budu potřebovat jen 3 klávesy - Caps,Shift a Control... takže jsem to vyřešil IFem

Teď další problémek :D
Mám Font dialog, v events je jen Apply,takže když kliknu na OK tak se písmo nezmění, musím napřed na Použít, pak na OK a to už se změní... Dá se udělat aby se změnilo po kliknutí na OK ?

Editováno 22.10.2012 10:01
 
Nahoru Odpovědět 22.10.2012 10:00
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

Když jsem napsal ten Regex, tak jsem si uvědomil, že klávesa není znak. Je tedy otázkou, zda Regex použít. Pokud by se do toho montovaly funkční klávesy, tak určitě ne.

Nahoru Odpovědět 22.10.2012 10:02
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Kit
matesax:

e.KeyData.ToS­tring()

Funkční: "F.", zbytek vypsat...

 
Nahoru Odpovědět 22.10.2012 10:05
Avatar
matesax
Redaktor
Avatar
Odpovídá na Daniel Vítek
matesax:
if (fontDialog1.ShowDialog() == DialogResult.OK)
xxx.Font = fontDialog1.Font;
 
Nahoru Odpovědět 22.10.2012 10:12
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 19 zpráv z 19.