pulla
pulla
#programowanie #java
Mam stringa "AAA BBB CCCC DDD sa dasd sad sadas sad sad asd dasd". Jak widać początęk składa się z wyrazów tylko z wielkich liter. Niestety liczba wyrazów z wielkimi literami nie jest znana czasem jest ich 2 czasem 5. Chciałbym wyciągnąc tego stringa który składa się z wielkich liter czyli AAA BBB CCCC DDD.
Na ten moment wymyśliłem, żeby wrzucić każdy wyraz do tablicy, później zrobić pętlę i sprawdzać każdy wyraz wyrażeniem regularnym i jeśli trafię na wyraz nie zawierający tylko wielkich liter przerywam pętlę. Jest jakiś łatwiejszy sposób na to?
  • Najlepsze
  • Wszystkie komentarze
frax
frax
3
@pulla: Jeżeli masz już regexy, to coś w rodzaju "( *[A-Z]+)*" złapie ci dokładnie to, co chcesz.
A_F_S
@pulla: przecież pętlę możesz umieścić w wyrażeniu regularnym.
frax
frax
2
@pulla: Bo nigdzie nie matchujesz spacji. Wstaw "( ?[0-9A-Z]+)*" i będzie dobrze. Spację umieściłem na początku, żeby nie łapała się ta z końca. Jeżeli spacji może być kilka, zamień ? na *.
Wyrewolwerowanyrewolwer
@pulla: Dokładnie jak wyżej. Regexp to kwestia kilku znaków i poradzi sobie genialnie z tym.
Wyrewolwerowanyrewolwer
@pulla: Bo źle napisałeś regexpa. Zobacz tutaj:
https://regex101.com/r/kS8rB5/2
pulla
pulla
pulla Autor
1
@frax: @Wyrewolwerowanyrewolwer:
Fakt zapomniałem o spacji, dzięki wielki ! :)
D.....o
D.....o
@pulla: naucz sie wyrażeń regularnych (reg exp) będziesz miał +100 do skilla programowanie/IT
pulla
pulla
pulla Autor
0
@frax: Powiem szczerze nie potrafię tego ogarnąć. Na ten moment wygląda u mnie to tak:

String[] ar = title.split(" ");
StringBuilder strb = new StringBuilder();
for(String str:
Wyrewolwerowanyrewolwer
@pulla: Niestworzone cuda, znaczy że co Ci wychodziło?
pulla
pulla
pulla Autor
0
@Wyrewolwerowanyrewolwer:

String mydata = "11AAAAAA IMAGIS AAASA test test test SA sdas KDSA";
Pattern pattern = Pattern.compile("([0-9A-Z]+)*");
Matcher matcher = pattern.matcher(mydata);
moriturius
@pulla: zamiast spacji możesz dac \s
wtedy będzie lapac wszystkie białe znaki, a regex będzie bardziej explicit