Naik - s blog - cseréje és eltávolítása ismétlődő karakterre
Ez a cikk meg fogja vizsgálni a csere és eltávolítását példányban karakterre Java reguláris kifejezéseket.
Csere, és távolítsa el ismétlődő karakterek lesznek a String osztályában csere funkciót.
A String osztály négy módszer karakter csere. Íme az aláírást:
- cserélje (char oldChar, char newChar): String
- cserélje (CharSequence cél, CharSequence csere): String
- replaceAll (String regex, Szálcsere): String
- replaceFirst (String regex, Szálcsere): String
Az első két módszer ebben az esetben nem hasznos, mert meg kell cserélni egy karakter (char) egy másik karakter vagy karaktersorozat (CharSequence) egy másik sorozatot. CharSequence - olyan felület, amely hajtja végre osztályok: String, StringBuilder és StringBuffer.
Nézzük laknak az utolsó két módszer: replaceAll és replaceFirst. Mindkét módszer első paraméter vesz egy reguláris kifejezés (regex), és a második paraméter helyettesítő szöveg (csere). replaceAll - cserélje mérkőzést, replaceFirst helyettesíti csak az első mérkőzés. Ez a cikk csak replaceAll használni.
- Képzeljük el a következő probléma: azt szeretnénk, hogy törölje az összes sorok mellett álló két azonos karakter. Például a «keeshh» vonalat kell végül kiderülhet vonal «ks»
String text = "keeshh"; Karakterlánc eredmény = text.replaceAll ( "([a-z]) \\ 1", ""); System.out.println (eredmény); // "KS"
replaceAll - funkció helyett az összes mérkőzést
[A-Z] - expressziós azt sugallja, hogy ez a hely, hogy egy karaktert tartományban tól Z-ig.
() - zárójelben a csoport, amely utalhat szám, a számozás egyikénél indul
\ 1 - azt jelzi, hogy ezen a ponton meg kell egyeznie a szöveget, mint a csoport szám 1. A backslash „\” kell megszökött, így szempontjából a két perjel „\\”
Például, ha «keeshhs» vonalat, cserélje ki a két egymást követő ismétlődő karaktereket, akkor viszont «kss», hanem azt a rész «ss» is el kell távolítani. Tedd be a fenti kódot a ciklusban, hogy ismételjük mindaddig, amíg nem lesz cserélni az összes ismétlődő szimbólumok. Ebben a megvalósításban, megpróbáljuk törölni ismétlés amíg változott (rövidített) string-hossz
String text = "keeshhs"; int len; csinál
Például «keeeshh» vonalakat eredményez lenni «ks». Megvalósítás:
Ahogy talán már észre után edinichki adunk + karaktert. Plusz a rendszeres azt jelenti, hogy az előző, plusz a szimbólum vagy csoport meg kell felelnie egy vagy több alkalommal. Akkor is ezt a kódot a hurok cserélni újra megjelent ismétlés.
Például: A «kkeesshh» vonalon sorakoznak «kesh».
Megvalósítás:
String text = "kkeesshh"; text = text.replaceAll ( "([a-z]) \\ 1", "$ 1"); System.out.println (szöveg); // "Kesh"
Csereként az kifejezést használta $ 1. amely azt mondja, hogy a szöveg, hogy illeszkedik a reguláris kifejezésre kell cserélni szöveg megfelelő csoport száma 1. Ebben az esetben, a csoportosítás egy szám - ez a szöveg, amely egyezik egy mintával [a-z].
Mi lehet átírni a kódot a csoport 2-es szám helyett
String text = "kkeesshh"; text = text.replaceAll ( "([a-z]) (\\ 1)", "$ 2"); System.out.println (szöveg); // "Kesh"
A második csoport felel meg a sablon \\ 1
Például a húr «keeeeessshh» átalakult «kesh».
Megvalósítás:
String text = "keeeeessshh"; text = text.replaceAll ( "([a-z]) \\ 1+", "$ 1"); System.out.println (szöveg); // "Kesh"
Reguláris kifejezések segítségével, hogy írjon kompakt kódot, és esetleg időt takarít meg a kódegyüttesnek, ha ez jó, hogy megtanulják a reguláris kifejezéseket.