NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Michaal.K
Člen
Avatar
Michaal.K:8.4.2016 14:03

Ahoj,
chtěl jsem se zeptat jak by vypadal regulární výraz pro číslo od 1-99. Potřebuji zjistit zda řetězec s nějakým textem obsahuje číslo od 1-99.
Díky za pomoc

 
Odpovědět
8.4.2016 14:03
Avatar
Odpovídá na Michaal.K
Neaktivní uživatel:8.4.2016 22:52
[1-9][0-9]?
Editováno 8.4.2016 22:53
Nahoru Odpovědět
8.4.2016 22:52
Neaktivní uživatelský účet
Avatar
Michaal.K
Člen
Avatar
Odpovídá na Neaktivní uživatel
Michaal.K:11.4.2016 7:00

Ahoj,
tak jsem vyzkoušel výraz, ale když je číslo větší než 99 tak ho stejně vyhledá. Ještě jsem se chtěl zeptat zda by nějak šlo, že pokud zadaný řetězec obsahuje číslo od 1 do 99 tak mi to číslo z řetězce přeuloží do proměnné? Díky moc...

 
Nahoru Odpovědět
11.4.2016 7:00
Avatar
Michal Žůrek - misaz:11.4.2016 8:42

Posix začal dobře, ale neošetří mu to víceznaková čísla. 123 je pole jeho výrazu validní.

^[1-9][0-9]?$
 
Nahoru Odpovědět
11.4.2016 8:42
Avatar
Michaal.K
Člen
Avatar
Odpovídá na Michal Žůrek - misaz
Michaal.K:11.4.2016 9:35

Ahoj, díky za radu teď už to funguje pro čísla od 1 do 99. Ale ještě se mi vyskytl jeden problém, když zadám řetězec: data = "test15", tak mi tohodí že tam číslo není. Kód vypadá takto:

Regex regex = new Regex(@"^[1-9][0-9]?$");
Match match = regex.Match(data);
if (match.Success)
{
        // retezec obsahuje cislo
}
else
{
        // retezec neobsahuje cislo
}
 
Nahoru Odpovědět
11.4.2016 9:35
Avatar
Odpovídá na Michaal.K
Neaktivní uživatel:11.4.2016 14:50

protože tam máš ^ a $
takže celé by to mohlo vypadat tak nějak

(?<![0-9])[1-9][0-9]?(?![0-9])

(?<![0-9]) kontroluje, že před číslem 1-99 nesmí být žadné jiné číslo
(?![0-9]) kontroluje, že za číslem 1-99 nesmí být žadné jiné číslo

Editováno 11.4.2016 14:52
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
11.4.2016 14:50
Neaktivní uživatelský účet
Avatar
Michaal.K
Člen
Avatar
Odpovídá na Neaktivní uživatel
Michaal.K:12.4.2016 8:17

Díky moc teď už to funguje správně. Ještě jsem se chtěl zeptat, když uživatel zadá řetězec: data = "test15", tak mi to hodí, že číslo od 1-99 zadaný řetězec obsahuje a já bych z toho řetězce to číslo potřeboval dostat a uložit do int.
Díky...

 
Nahoru Odpovědět
12.4.2016 8:17
Avatar
Odpovídá na Michaal.K
Michal Štěpánek:12.4.2016 10:19

Musíš si zjistit, na jaké pozici v tom stringu je číslo a pak si ho můžeš... třeba uložit 8-)

Nahoru Odpovědět
12.4.2016 10:19
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Michaal.K
Neaktivní uživatel:12.4.2016 11:29

Poté, co zjistíš, že je tam tedy to číslo, tak ho získáš takto:

match.Groups[0].Value;

Dostaneš řetězec, takže ho pak ještě převeď na číslo.

Nahoru Odpovědět
12.4.2016 11:29
Neaktivní uživatelský účet
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na Michaal.K
Petr Nymsa:12.4.2016 11:39
string str = "te185st";
          int number = 0;
          for(int i = 0; i < str.Length; i++)
          {
              if (str[i] >= '0' && str[i] <= '9') {
                  number *= 10;
                  number += (str[i] - '0');
              }
          }
Nahoru Odpovědět
12.4.2016 11:39
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Michaal.K
Člen
Avatar
Odpovídá na Neaktivní uživatel
Michaal.K:12.4.2016 15:28

Super už to funguje... Díky moc

 
Nahoru Odpovědět
12.4.2016 15:28
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 11 zpráv z 11.