szukanie cyfry w nazwie przedmiotu

szukanie cyfry w nazwie przedmiotu
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam mam pytanko ponieważ tworze sobie przedmioty których nazwy mniejwiecej tak wyglądają
#nr Jakaś_tam_nazwa
i mam taki problem jak pobierac ten numer? bo wiem że moge np tak
String t ="#12 Cies";
int nr = t.substring(1,2); i teraz przeskakuje # i np pobieram liczbe dla przykładów gdzie mam nr jedno cyfrowy zadziała ale co zrobić jeśli będe miał 2/3 cyfrową liczbe? wiem że moge zamiast 2 w substring dac 4 itp ale co się stanie jak wciągnie do tego inta spacje?
myslałem też nad takim wyjściem
Kod (java):

Kopiuj
 int nr;
 try {
 nr =t.substring(1,3);
 } catch (NumberFormatException ignored) {
 nr = t.substring(1,2);
}
  • nie wiem czy to zadziała;/ jakieś porady?
NA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 68
0

Wydaje mi się, że wyrażenia regularne mogą pomóc. Przerobiony przykład ze stack'a:

Kopiuj
String mydata = "some string with 35552 inside";
Pattern pattern = Pattern.compile("(\d+)");
Matcher matcher = pattern.matcher(mydata);
if (matcher.find())
{
    System.out.println(matcher.group(1));
} 

Powinno dać 35552.

http://stackoverflow.com/questions/4662215/how-to-extract-a-substring-using-regex

A jeśli wyraz zawsze się zaczyna # i kończy cyfrą to chyba nawet poprawniej będzie: "^#(\d+)$"

Jeśli \d nie działa to zawsze można użyć [0-9]

KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 1683
0

coś takiego nie wystarczy? https://ideone.com/jZKn1S

Allocer44
  • Rejestracja: dni
  • Ostatnio: dni
0

Z tego co rozumiem, chcesz mieć nazwę przedmiotu wraz z jego numerem. Dlaczego nie zrobisz tego na obiektach, żeby to miało ręce i nogi? Przykład:

Kopiuj
class Item{
    private int id;
    private int magicNumber;
    private String name;
   //gettery i settery
}

Nie rozumiem natomiast dlaczego to robisz w taki dziwny sposób, przecież to będzie mordęga, gdy jak sam zauważyłeś liczba tych przedmiotów będzie duża. A moim zdaniem, nawet jeśli jest mała (1-9) już musisz się męczyć w jakieś dziwne parsowanie string'a. Stosowanie tutaj regex'ów mija się z celem.
Jeśli zastosujesz obiektowość to problem w magiczny sposób zniknie. W dodatku ułatwisz wykonywanie operacji na kolekcji tych obiektów.

  • Rejestracja: dni
  • Ostatnio: dni
0

ok mam to ale mam pytanie jeśli np mam przedmiot o takiej nazwie
"00.00.0000"
chodzi mi oto że jest jakby format 2 int.2int.4int
i jak np sprawdzać czy
String s = "20.10.1000";
ma format taki? "00.00.0000"?

ZI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 22
0

moze regex? [0-9]{2}\.[0-9]{2}\.[0-9]{4}

  • Rejestracja: dni
  • Ostatnio: dni
0

mógłbyś pokazać sposób użycia?

kasiaKasia
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 259
0
Kopiuj
StringBuffer sb = new StringBuffer("11223333");
sb.insert(2, ".").insert(5, ".");
System.out.println(sb);

wyniki:

Kopiuj
11.22.3333

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.