manipularea șirurilor se face cel mai des în timpul programării. Cum ar fi eliminarea spațiilor din sau în jurul textului șir. Acest lucru, de asemenea, cunoscut sub numele de ‘strip’ping off spații în șir. Deci, până acum suntem cu toții conștienți de diferitele moduri de a elimina spațiile din șir în java, și anume trim, replaceAll. Cu toate acestea, java 11 a făcut unele adăugiri noi la acestea cu metode precum, strip , stripLeading, stripTrailing.
de cele mai multe ori, folosim doar metoda de decupare pentru îndepărtarea spațiilor. Nu ne oprim niciodată și credem că există o modalitate mai bună de a se potrivi nevoilor noastre? Sigur, trim () funcționează bine pentru majoritatea cazurilor, dar există multe metode diferite în java. Fiecare având propriile sale avantaje și dezavantaje. Cum decidem ce metodă ne convine cel mai bine?
Ei bine, în acest blog vom acoperi diferitele metode în detaliu.
- trim (): eliminarea spațiilor de conducere și la sfârșit din șir
- strip(): Elimină spațiile de la începutul și sfârșitul șirului. Metoda Strip este Unicode charset conștient
- trim vs strip: diferențele dintre trim și strip metoda
- stripLeading(): elimină spațiile albe numai de la începutul șirului
- stripTrailing(): elimină spațiile albe numai de la sfârșitul șirului
- replace(): înlocuiește toate caracterele țintă cu caracter nou
- replaceAll(): înlocuiește toate caracterele potrivite cu caracter nou. Această metodă ia expresie regulată ca intrare pentru a identifica subșir țintă care trebuie înlocuit
- replaceAll vs replace: diferențe între replace și replaceAll metoda
- replaceFirst(): înlocuiește doar prima apariție a subșir țintă cu un nou șir de înlocuire
diferite moduri de a elimina spațiile din șir în java
cel mai important punct de reținut este că în java un obiect șir este imuabil. Aceasta înseamnă că nu putem modifica un șir, prin urmare, toate metodele returnează șir nou cu toate transformările.
trim() metoda în java
trim() este metoda cea mai frecvent utilizată de dezvoltatorii java pentru eliminarea spațiilor de conducere și de urmărire. Pentru metoda trim spațiu caracter înseamnă orice caracter a cărui valoare ASCII este mai mică sau egală cu 32 (‘U+0020’).
exemplu de metodă trim pentru a elimina spațiile:
public class StringTrimTest { public static void main(String args) { String string = " String with space "; System.out.println("Before trim: \"" + string +"\""); System.out.println("After trim: \"" + string.trim() +"\""); }}
în CommandLineRunnerImpl
status = rularea
Before trim: " String with space "After trim: "String with space"
strip() metoda Java 11
în lansarea Java 11 new strip() metoda a fost adăugată pentru a elimina spațiile de conducere și la sfârșit din șir.
această metodă a fost adăugată deoarece există diferite caractere spațiale în conformitate cu standardele Unicode având o valoare ASCII mai mare de 32(‘U+0020’). Ex: 8193 (U+2001).
pentru a identifica aceste caractere spațiale, noua metodă isWhitespace(int) a fost adăugată din Java 1.5 în clasa de caractere. Această metodă utilizează unicode pentru a identifica caracterele spațiale. Puteți citi mai multe despre caracterele spațiale unicode aici.
metoda strip folosește acest caracter.metoda isWhitespace (int) pentru a acoperi o gamă largă de caractere spațiale albe și a le elimina.
exemplu de bandă():
public class StringStripTest { public static void main(String args) { String string = " String with space "; System.out.println("Before strip: \"" + string+"\""); System.out.println("After strip: \"" + string.strip()+"\""); }}
în CommandLineRunnerImpl
status = rularea
Before strip: " String with space "After strip: "String with space"
diferența dintre trim și strip metoda în java
trim () | benzi() |
---|---|
din Java 1 | din Java 11 |
utilizează valoarea punctului de cod(ASCII) | utilizează valoarea Unicode |
elimină caracterul principal și final(spațiu) | elimină caracterul principal și final (spațiu) |
elimină caracterele cu o valoare ASCII mai mică sau egală cu ‘U+0020’ sau ‘ 32 ‘ | elimină toate caracterele spațiale conform unicode |
să ne uităm la exemplul în care vom folosi caracterul spațiu alb mai mare decât 32 (‘U+0020’) unicode.
public class StringTrimVsStripTest { public static void main(String args) { String string = '\u2001'+"String with space"+ '\u2001'; System.out.println("Before: \"" + string+"\""); System.out.println("After trim: \"" + string.trim()+"\""); System.out.println("After strip: \"" + string.strip()+"\""); }}
ieșire:
Before: " String with space "After trim: " String with space "After strip: "String with space"
în exemplul de mai sus putem vedea că metoda trim nu poate elimina caracterul spațial adăugat de caracterul unicode ‘\u2001’.
Notă: Dacă executați pe mașină windows, este posibil să nu puteți vedea ieșirea similară din cauza setului unicode limitat. Puteți utiliza compilatoare online pentru a rula programul. Unele link-uri compilator online sunt ca mai jos,
Java-8: https://www.jdoodle.com/online-java-compiler/
Java-11: https://www.tutorialspoint.com/compile_java_online.php
stripLeading () metoda Java 11
adăugat în Java 11, metoda stripLeading() elimină toate spațiile de conducere dintr-un șir.
Similar cu metoda strip stripLeading folosește și caracter.isWhitespace (int) pentru spații albe identifyng.
public class StringStripLeadingTest { public static void main(String args) { String string = " String with space "; System.out.println("Before: \"" + string+"\""); System.out.println("After : \"" + string.stripLeading()+"\""); }}
ieșire:
Before: " String with space "After : "String with space "
stripTrailing () metoda Java 11
adăugat în Java 11, metoda stripTrailing() elimină toate spațiile finale dintr-un șir.
Similar cu metoda strip stripTrailing folosește și caracter.isWhitespace (int) pentru identificarea spațiilor albe.
public class StringStripTrailingTest { public static void main(String args) { String string = " String with space "; System.out.println("Before: \"" + string+"\""); System.out.println("After : \"" + string.stripTrailing()+"\""); }}
ieșire:
Before:" String with space "After :" String with space"
replace(țintă CharSequence, înlocuire CharSequence):
adăugat din java 1.5, această metodă este utilizată pentru a înlocui fiecare subșir țintă cu șirul de înlocuire specificat.
această metodă înlocuiește toate elementele țintă potrivite.
notă: o altă metodă înlocui(char oldChar, char newChar) este prezent în clasa șir java. Singura diferență este că această metodă are un singur caracter ca țintă și înlocuire. Nu putem folosi această metodă pentru a elimina spațiul, deoarece nu putem avea caracter gol ca înlocuitor.
exemplu pentru a elimina toate spațiile din șir
public class StringReplaceTest { public static void main(String args) { String string = " String with space "; System.out.println("Before : \"" + string + "\""); System.out.println("Replace: \"" + string.replace(" ", "") + "\""); }}
ieșire:
Before : " String with space "Replace : "Stringwithspace"
replaceAll(String regex, string replacement)
adăugat în java 1.4, aceasta este una dintre cele mai puternice metode de manipulare șir. Putem folosi această metodă în mai multe scopuri.
folosind replaceAll() metoda putem înlocui fiecare potrivire subșir expresie regulată cu șirul de înlocuire dat. De exemplu, pentru eliminarea tuturor spațiilor, eliminarea spațiilor de conducere, eliminarea spațiilor finale și așa mai departe.
trebuie doar să creăm o expresie regulată corectă cu parametrul de înlocuire corect. Câteva exemple de expresii regulate, după cum urmează:
\s + | caută tot spațiul |
^\s + | găsiți toate spațiile la începutul liniei |
\s + $ | găsiți toate spațiile la sfârșitul liniei |
exemplu pentru înlocuirea spațiilor în șir,
Notă: În java pentru a adăuga ” / „trebuie să folosim caracterul escape, astfel încât pentru” \ S+ „trebuie să folosim” \ \ s+”
public class StringReplaceAllTest { public static void main(String args) { String string = " String with space "; System.out.println("Before replaceAll : \"" + string+"\""); System.out.println("Replace all space : \"" + string.replaceAll(" ", "") + "\""); System.out.println("Replace all regex : \"" + string.replaceAll("\s+", "") + "\""); System.out.println("Replace Leading : \"" + string.replaceAll("^\s+", "") + "\""); System.out.println("Replace trailing : \"" + string.replaceAll("\s+$", "") + "\""); }}
ieșire:
Before replaceAll : " String with space "Replace all space : "Stringwithspace"Replace all regex : "Stringwithspace"Replace Leading : "String with space "Replace trailing : " String with space"
după cum putem vedea că replaceAll() este o metodă destul de puternică dacă o folosim cu o expresie regulată adecvată.
diferența dintre metoda replaceAll și replace
replaceAll () | replace() |
---|---|
din Java 1.4 | din Java 1.5 |
acceptă expresia regulată pentru identificarea țintei | acceptă șirul pentru identificarea țintei |
folosit pentru înlocuirea corzilor fixe sau dinamice | folosit pentru înlocuirea corzilor fixe |
elimină caracterele cu o valoare ASCII mai mică sau egală cu ‘U+0020’ sau ‘ 32 ‘ | elimină toate caracterele spațiale conform unicode |
replaceFirst(String regex, string replacement)
adăugat în java 1.4, replaceFirst metoda înlocuiește doar primul meci de expresie regulată dat cu șir de înlocuire.
această metodă poate fi foarte utilă dacă trebuie doar să înlocuiți o singură primă apariție. De exemplu, dacă trebuie doar să eliminăm spațiile de conducere, putem folosi „\\S+” sau „^\\s+”.
de asemenea, putem folosi această metodă pentru a elimina spațiile finale utilizând expresia regulată „\\s+$”. Deoarece această expresie se va potrivi doar cu ultimele spații din linie. Deci, ultimele spații sunt considerate ca fiind primul meci pentru această metodă.
să luăm un exemplu pentru eliminarea spațiilor de conducere și de urmărire din șir
public class StringReplaceFistTest { public static void main(String args) { String string = " String with space "; System.out.println("Before : \"" + string+"\""); System.out.println("Replace : \"" + string.replaceFirst("space", "update") + "\""); System.out.println("Leading : \"" + string.replaceFirst("\s+", "") + "\""); System.out.println("Trailing : \"" + string.replaceFirst("\s+$", "") + "\""); }}
ieșire
Before : " String with space "Replace : " String with update "Leading : "String with space "Trailing : " String with space"
Citire rapidă :
- există diferite moduri de a elimina spațiile din șir în java
- trim() este cea mai comună metodă utilizată pentru eliminarea spațiilor din șir
- metoda trim nu este Unicode conștient și utilizează valoarea ascii pentru a identifica caractere spațiu
- din java 11 new method ‘strip()’ se adaugă pentru eliminarea spațiilor
- metoda strip este Unicode conștient și ar trebui să fie utilizat pentru îndepărtarea spațiilor special în cazul multilingv
- din java 11 metode cum ar fi stripleading() și striptrailing() sunt aded pentru îndepărtarea spațiilor de conducere și la sfârșit.
- pentru îndepărtarea mai controlată a spațiilor putem folosi replaceAll (), replace (), replaceFirst()