V tomto příspěvku se budeme zabývat různými způsoby kontroly, zda řetězec obsahuje alfanumerické znaky v Javě. Jinými slovy, zjistit, zda se řetězec skládá pouze z čísel a abecedy. Nulový řetězec by měl vrátit false a prázdný řetězec true.
Java pro tuto jednoduchou úlohu neposkytla žádnou standardní funkci. Nicméně v Javě existuje několik metod, jak zjistit, zda je zadaný String alfanumerický –
Regulární výraz
Jde o použití regulárního výrazu ^*$, který kontroluje řetězec na přítomnost alfanumerických znaků. To lze provést pomocí metody matches() třídy String, která řekne, zda tento řetězec odpovídá zadanému regulárnímu výrazu, či nikoliv.
Stáhnout spuštěný kód
Výstup:
IsAlphaNumeric: true
Pokud je regulární výraz volán často, možná budete chtít regulární výraz zkompilovat pro zvýšení výkonu:
Download Run Code
Output:
IsAlphaNumeric: true
Lambda výrazy
Od Javy 8 to lze efektivně provést pomocí lambda výrazů:
Download Run Code
Output:
IsAlphaNumeric: true
Použití externích knihoven
Můžeme použít knihovnu Apache Commons Lang, která má metodu isAlphanumeric() obsaženou ve třídě StringUtils.
Naivní
V prosté Javě můžeme iterovat po znacích řetězce a kontrolovat každý znak, zda je alfanumerický, pomocí Character.isLetterOrDigit(char). To je demonstrováno níže:
Stáhnout spuštěný kód
Výstup:
IsAlphaNumeric: true
(6 hlasů, průměr: 5,00 z 5)
Díky za přečtení
.