merkkijonon manipulointi tapahtuu useimmiten ohjelmoinnin aikana. Kuten välilyöntien poistaminen merkkijonotekstistä tai sen ympäriltä. Tämä tunnetaan myös ”nauhat” irtoaminen välilyöntejä merkkijono. Joten tähän asti olemme kaikki tietoisia eri tapoja poistaa välilyöntejä merkkijono java, nimittäin trim, replaceAll. Kuitenkin, java 11 on tehnyt joitakin uusia lisäyksiä näihin menetelmiä, kuten, nauhat , stripLeading, striprailing.
useimmiten käytetään vain trimmausmenetelmää välilyöntien poistoon. Emme koskaan pysähdy ja ajatella, että voisi olla parempi tapa tyydyttää tarpeemme? Toki trim () toimii hyvin useimmissa tapauksissa, mutta Jaavalla on monia erilaisia menetelmiä. Jokaisella on omat etunsa ja haittansa. Miten päätämme, mikä menetelmä sopii meille parhaiten?
No, tässä blogissa käydään yksityiskohtaisesti läpi eri menetelmiä.
- trim (): johto-ja jälkitilojen poistaminen merkkijonosta
- strip (): Poistaa välilyöntejä merkkijonon alussa ja lopussa. Nauhamenetelmä on Unicode charset aware
- trim vs strip: erot trim-ja stripleading-menetelmässä
- stripLeading(): poistaa valkoiset välilyönnit vain merkkijonon alusta
- striprailing(): poistaa valkoiset välilyönnit vain merkkijonon lopusta
- replace(): korvaa kaikki kohdemerkit uudella merkillä
- replafeall(): korvaa kaikki vastaavat merkit uudella merkillä. Tämä menetelmä ottaa säännöllisen lausekkeen syötteenä tunnistaakseen kohteen substraatin, joka on korvattava
- replafeall vs replace: erot korvaa-ja replafeall-menetelmän välillä
- replaceFirst(): korvaa vain ensimmäisen kohdesubstrauksen uudella korvaavalla merkkijonolla
erilaisia tapoja poistaa välilyöntejä merkkijonosta Javassa
tärkeintä on huomata, että java-kielessä merkkijonoesine on muuttumaton. Se tarkoittaa, että emme voi muokata merkkijono, joten kaikki menetelmät palauttaa uuden merkkijonon kaikki muutokset.
trim () – menetelmä Javassa
trim () on java-kehittäjien yleisimmin käyttämä menetelmä johto-ja jälkitilojen poistamiseen. Trim-menetelmässä välilyönnillä tarkoitetaan mitä tahansa merkkiä, jonka ASCII-arvo on enintään 32 (”U+0020”).
esimerkki trim-menetelmästä välilyöntien poistamiseksi:
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() +"\""); }}
CommandLineRunnerImpl: ssä
status = running
Before trim: " String with space "After trim: "String with space"
strip() method Java 11
Java 11: n julkaisussa lisättiin uusi strip () – menetelmä johto-ja jälkitilojen poistamiseksi merkkijonosta.
tämä menetelmä lisättiin, koska on olemassa erilaisia Unicode-standardien mukaisia avaruusmerkkejä, joiden ASCII-arvo on yli 32 (”U+0020”). Ex: 8193 (U+2001).
näiden avaruusmerkkien tunnistamiseksi Java 1.5: stä lisättiin uusi menetelmä isWhitespace(int) hahmoluokkaan. Tässä menetelmässä käytetään Unicodea avaruuden merkkien tunnistamiseen. Voit lukea lisää unicode-avaruusmerkeistä täältä.
nauhamenetelmässä käytetään tätä merkkiä.isWhitespace (int) menetelmä kattaa laajan valikoiman valkoisia välilyöntimerkkejä ja poistaa ne.
esimerkki nauhasta():
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()+"\""); }}
CommandLineRunnerImpl
status = running
Before strip: " String with space "After strip: "String with space"
trim-ja strip-menetelmän ero Jaavassa
trim () | kaistale() |
---|---|
Javalta 1 | Javalta 11 |
käyttää codepoint (ASCII) – arvoa | käyttää Unicode-arvoa |
poistaa johtavan ja perään johtavan merkin(välilyönti) | poistaa johtavan ja perään johtavan merkin (välilyönti)) |
poistaa merkit, joiden ASCII-arvo on pienempi tai yhtä suuri kuin ”U+0020″ tai ” 32 ” | poistaa kaikki Unicoden mukaiset välilyöntimerkit |
Katsotaanpa esimerkki, jossa käytämme valkoista tilaa merkki suurempi kuin 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()+"\""); }}
Lähtö:
Before: " String with space "After trim: " String with space "After strip: "String with space"
yllä olevassa esimerkissä voimme nähdä, että trim menetelmä ei voi poistaa välilyöntiä lisätään ’\u2001 ’ Unicode merkki.
Huomaa: Jos olet windows-koneella, et välttämättä näe vastaavaa tulostetta johtuen rajoitetusta unicode-asetuksesta. Voit käyttää online-kääntäjiä ohjelman suorittamiseen. Jotkut online-kääntäjän linkit ovat kuten alla,
Java-8: https://www.jdoodle.com/online-java-compiler/
Jaava-11: https://www.tutorialspoint.com/compile_java_online.php
stripLeading () – menetelmä Java 11
lisätty Java 11: een, stripLeading () – menetelmä poistaa kaikki johtavat välilyönnit merkkijonosta.
samanlainen nauhamenetelmä stripLeading käyttää myös merkkiä.isWhitespace (int) tunniste-valkoisille välilyönneille.
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()+"\""); }}
Lähtö:
Before: " String with space "After : "String with space "
striprailing() menetelmä Java 11
lisätty Java 11: ssä, striprailing () – menetelmä poistaa kaikki päätteet merkkijonosta.
samanlainen strippausmenetelmä striptease käyttää myös luonnetta.isWhitespace (int) valkoisten välilyöntien tunnistamiseen.
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()+"\""); }}
Lähtö:
Before:" String with space "After :" String with space"
replace (CharSequence target, CharSequence replacement):
lisätty java 1.5: stä, tätä menetelmää käytetään korvaamaan jokainen kohdesubstraatti määrätyllä korvausmerkkijonolla.
tämä menetelmä korvaa kaikki vastaavat kohdeelementit.
Huom: Javan kieliluokassa esiintyy vielä yksi metodin korvaaja (char oldChar, char newChar). Ainoa ero on, että tämä menetelmä ottaa yhden merkin kohde ja korvaava. Emme voi käyttää tätä menetelmää poistaaksemme tilaa, koska emme voi korvata tyhjää merkkiä.
esimerkki kaikkien välilyöntien poistamiseksi merkkijonosta
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(" ", "") + "\""); }}
Lähtö:
Before : " String with space "Replace : "Stringwithspace"
replaceAll (String regex, String replacement)
lisätty java 1.4: ään, tämä on yksi tehokkaimmista keinoista merkkijonojen manipulointiin. Voimme käyttää tätä menetelmää moniin tarkoituksiin.
replaceAll () – menetelmällä voimme korvata jokaisen vastaavan säännöllisen lausekkeen substraatin annetulla korvaavalla merkkijonolla. Esimerkiksi poistamalla kaikki tilat, poistamalla johtavat tilat, poistamalla perään tilat ja niin edelleen.
meidän tarvitsee vain luoda oikea säännöllinen lauseke oikealla korvausparametrilla. Joitakin säännöllisen lausekkeen esimerkkejä kuten alla:
\s + | Etsi kaikki avaruus |
^\s + | Etsi kaikki välilyönnit riviltä |
\s + $ | Etsi kaikki välilyönnit riviltä, joka päättyy |
esimerkki välilyöntien korvaamisesta merkkijonossa,
Huomautus: Javassa lisätäksemme ’ / ’ meidän on käytettävä escape-merkkiä, joten ”\S+”: ssa meidän on käytettävä ” \\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+$", "") + "\""); }}
tuloste:
Before replaceAll : " String with space "Replace all space : "Stringwithspace"Replace all regex : "Stringwithspace"Replace Leading : "String with space "Replace trailing : " String with space"
kuten voimme nähdä, että replaceAll () on melko tehokas menetelmä, jos käytämme sitä kunnollisen säännöllisen lausekkeen kanssa.
korvausmenetelmän ja korvausmenetelmän ero
replafeall () | replace() |
---|---|
Javalta 1.4 | Javalta 1.5 |
Hyväksyy säännöllisen lausekkeen kohteen tunnistamiseksi | hyväksyy merkkijonon kohteen tunnistamiseksi |
käytetään korjaamaan tai dynaamiseen merkkijonon vaihtoon | käytetään merkkijonon vaihtoon |
poistaa merkit, joiden ASCII-arvo on pienempi tai yhtä suuri kuin ”U + 0020″ tai ” 32 ” | poistaa kaikki välilyöntimerkit Unicoden mukaan |
replaceFirst (String regex, String replacement)
lisätty java 1: ssä.4, replaceFirst menetelmä korvaa vain ensimmäisen ottelun tietyn säännöllisen lausekkeen korvaava merkkijono.
tämä menetelmä voi olla erittäin hyödyllinen, jos sinun tarvitsee vain korvata vain yksi ensimmäinen esiintyminen. Esimerkiksi jos meidän tarvitsee vain poistaa johtavat välilyönnit, Voimme käyttää ”\\S+” tai ”^\\s+”.
tällä menetelmällä voidaan poistaa myös välilyönnit käyttämällä” \\s+$ ” – säännöllistä lauseketta. Koska tämä lauseke vastaa vain rivin viimeisiä välilyöntejä. Niinpä viimeisiä välilyöntejä pidetään tämän menetelmän ensimmäisenä otteluna.
Otetaanpa esimerkki siitä, miten narusta poistetaan johto-ja takatilat
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+$", "") + "\""); }}
Lähtö
Before : " String with space "Replace : " String with update "Leading : "String with space "Trailing : " String with space"
Pikalukema :
- on olemassa erilaisia tapoja poistaa välilyöntejä merkkijonosta Javassa
- trim() on yleisin tapa poistaa välilyöntejä merkkijonosta
- trim-menetelmä ei ole Unicode-tietoinen ja käyttää ASCII-arvoa välilyöntien tunnistamiseen
- java 11 uusi menetelmä ’strip()’ lisätään välilyöntien poistamiseen
- Method strip on Unicode aware ja sitä tulisi käyttää välilyöntien poistamiseen erityisesti monikielisessä tapauksessa
- java 11 menetelmät, kuten stripleading() ja striprailing (), on Aded johtavien ja perään välilyöntien poistamiseen.
- hallitumpaan välilyöntien poistoon voidaan käyttää replaceAll (), replaceall (), replaceFirst()