různé způsoby, jak odstranit mezery z řetězce v Javě

manipulace s řetězci se provádí nejčastěji při programování. Stejně jako odstranění mezer v textu řetězce nebo kolem něj. Tomu se také říká „strip“, který odděluje mezery v řetězci. Takže až dosud jsme si všichni vědomi různých způsobů, jak odstranit mezery z řetězce v Javě, jmenovitě trim, replaceAll. Nicméně, java 11 učinil některé nové dodatky k nim s metodami, jako je, strip, stripLeading, stripTrailing.

většinou používáme metodu trim pro odstranění mezer. Nikdy se nezastavíme a myslíme si, že existuje lepší způsob, jak vyhovět naší potřebě? Jistě, trim () funguje dobře pro většinu případů, ale v Javě existuje mnoho různých metod. Každý má své vlastní výhody a nevýhody. Jak se rozhodneme, která metoda nám nejlépe vyhovuje?

v tomto blogu se podrobně zabýváme různými metodami.

    Různé způsoby, jak odstranit mezery z řetězce v jazyce java

  1. trim(): Odstraní úvodní a koncové mezery z řetězce
  2. strip(): Odstraní mezery na začátku a na konci řetězce. Strip metoda je znakovou sadu Unicode vědomi,
  3. > střihu vs pásu: Rozdíly mezi obložení a metodu
  4. stripLeading(): Odstraňuje bílá místa pouze od začátku řetězce
  5. stripTrailing(): Odstraňuje bílá místa pouze z konec řetězce
  6. replace () – nahradit: Nahradí všechny cílové postavy s novými znak
  7. replaceAll(): Nahradí všechny odpovídající znaky s novou postavou. Tato metoda přebírá regulární výraz jako vstup k identifikaci cílové podřetězec, který musí být nahrazen
  8. replaceAll vs nahradit: Rozdíly mezi replace a replaceAll metoda
  9. replaceFirst(): Nahrazuje pouze první výskyt cíl podřetězec s novou náhradní řetězec

nejdůležitější bod k poznámce je, že v javě objekt string je neměnný. To znamená, že nemůžeme upravit řetězec, proto všechny metody vrací nový řetězec se všemi transformacemi.

metoda trim() v Javě

trim () je nejčastěji používanou metodou vývojářů java pro odstranění předních a koncových mezer. Pro metodu trim space znakem se rozumí libovolný znak, jehož hodnota ASCII je menší nebo rovna 32 (‚u + 0020‘).

Příklad trim metoda k odstranění mezery:

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() +"\""); }}

V CommandLineRunnerImpl

stav=běží

Before trim: " String with space "After trim: "String with space"

strip() metoda Java 11

Ve verzi Java 11 nový strip() metoda byla přidána odstranit vedoucí a koncové mezery z Řetězce.

tato metoda byla přidána, protože existují různé mezery podle standardů Unicode s hodnotou ASCII větší než 32 („u+0020“). Příklad: 8193 (U + 2001).

k identifikaci těchto mezer byla přidána nová metoda isWhitespace (int) z Java 1.5 ve třídě znaků. Tato metoda používá unicode k identifikaci mezer. Více o unicode space characters si můžete přečíst zde.

metoda pásu používá tento znak.isWhitespace (int) metoda k pokrytí široké škály znaků prázdného místa a jejich odstranění.

příklad pásu():

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()+"\""); }}

V CommandLineRunnerImpl

stav=běží

Before strip: " String with space "After strip: "String with space"

Rozdíl mezi střihu a pás metoda v jazyce java

trim() strip()
Z Java 1 Java 11
Používá codepoint(ASCII) hodnota Používá Unicode hodnotu
Odstraní úvodní a koncové znak(mezera) Odstraňuje úvodní a koncové znak(mezera)
Odstraňuje znaky s ASCII hodnotou menší než nebo rovno ‚U+0020 „nebo “ 32‘ odstraní všechny mezery podle unicode

podívejme se na příklad, kde použijeme znak bílé mezery vyšší než 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()+"\""); }}

Výstup:

Before: " String with space "After trim: " String with space "After strip: "String with space"

Ve výše uvedeném příkladu můžeme vidět, že trim metoda je schopna odstranit znak mezery přidané ‚\u2001‘ unicode znaku.

Poznámka: Pokud používáte počítač se systémem windows, pravděpodobně nebudete moci vidět podobný výstup kvůli omezené sadě unicode. Ke spuštění programu můžete použít online kompilátory. Některé online kompilátor odkazy jsou jak je uvedeno níže,
Java-8: https://www.jdoodle.com/online-java-compiler/
Java-11: https://www.tutorialspoint.com/compile_java_online.php

stripLeading() metoda Java 11

Přidáno v Javě 11, stripLeading() metoda odstraní všechny úvodní mezery z Řetězce.

podobně jako metoda strip stripLeading také používá znak.isWhitespace (int) pro identifikaci bílých mezer.

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()+"\""); }}

Výstup:

Before: " String with space "After : "String with space "

stripTrailing() metoda Java 11

Přidáno v Javě 11, stripTrailing() metoda odstraní všechny končí mezery z Řetězce.

podobně jako metoda strip stripTrailing také používá znak.isWhitespace (int) pro identifikaci bílých mezer.

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()+"\""); }}

výstup:

Before:" String with space "After :" String with space"

nahradit(CharSequence cíl, CharSequence náhradní):

Přidáno od java 1.5, Tato metoda se používá k nahrazení každé cílové podřetězec se zadanou náhradní řetězec.

tato metoda nahrazuje všechny odpovídající cílové prvky.

Poznámka: ještě jedna metoda replace (char oldChar, char newChar) je přítomna ve třídě java string. Jediným rozdílem je, že tato metoda bere jeden znak jako cíl a náhradu. Tuto metodu nemůžeme použít k odstranění místa, protože nemůžeme mít prázdný znak jako náhradu.

Například odstranit všechny mezery z textového řetězce

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(" ", "") + "\""); }}

Výstup:

Before : " String with space "Replace : "Stringwithspace" 

replaceAll (String regex, String replacement)

Přidáno v javě 1.4, to je jeden z nejvíce účinný způsob pro manipulaci s řetězci. Tuto metodu můžeme použít k mnoha účelům.

metodou replaceAll () můžeme nahradit každý odpovídající podřetězec regulárního výrazu daným náhradním řetězcem. Například pro odstranění všech mezer, odstranění předních mezer, odstranění koncových mezer atd.

stačí vytvořit správný regulární výraz se správným náhradním parametrem. Některé regulární výrazy příklady, jak je uvedeno níže:

\s+ Najít všechny místa
^\s+ Najít všechny mezery na začátku řádku
\s+$ Najít všechny mezery na řádku konec

Příklad pro nahrazení mezery v řetězci,

Poznámka: V javě přidat ‚/‘ budeme muset použít escape znak, tak pro „\ \ s+“, musíme použít „\\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+$", "") + "\""); }}

Výstup:

Before replaceAll : " String with space "Replace all space : "Stringwithspace"Replace all regex : "Stringwithspace"Replace Leading : "String with space "Replace trailing : " String with space"

jak vidíme, replaceAll() je velmi silná metoda, pokud ji použijeme se správným regulárním výrazem.

Rozdíl mezi replaceAll a nahradit metodu

replaceAll() nahradit()
Od Java 1.4 Z Java 1.5
Přijímá regulární výraz pro identifikaci cíle Přijímá řetězec pro identifikaci cíle
Používá se pro opravu nebo dynamický řetězec nahrazení Používá se pro opravu, nahrazení řetězce
Odstraňuje znaky s ASCII hodnotou menší než nebo rovno ‚U+0020 „nebo “ 32‘ Odstraní všechny znaky podle kódování unicode

replaceFirst(String regex, String replacement)

Přidáno v java 1.4, replaceFirst metoda nahrazuje pouze první shodu daného regulárního výrazu náhradním řetězcem.

tato metoda může být velmi užitečná, pokud potřebujete nahradit pouze jeden první výskyt. Pokud například potřebujeme pouze odstranit přední mezery, můžeme použít „\\s+ „nebo“ ^\\s+“.

tuto metodu můžeme také použít k odstranění koncových mezer pomocí regulárního výrazu “ \\s+$“. Protože tento výraz bude odpovídat pouze posledním mezerám v řadě. Takže poslední mezery jsou považovány za první shodu pro tuto metodu.

řekněme, vzít příklad pro odstranění úvodních a koncových mezer z řetězce

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+$", "") + "\""); }}

Výstup

Before : " String with space "Replace : " String with update "Leading : "String with space "Trailing : " String with space"

Fast track čtení :

  • Existují různé způsoby, jak odstranit mezery z řetězce v jazyce java
  • trim() je nejběžnější způsob používaný pro odstraňování mezer v řetězci
  • > střihu metoda není unicode vědomi a používá ascii hodnotu identifikovat znaky
  • Z java 11 nová metoda strip()’je přidáno pro odstranění mezer
  • Metoda strip je unicode vědomi, a to by měly být použity pro odstranění prostorách, speciálně v případě vícejazyčné
  • Z Java 11 metody jako stripLeading() a stripTrailing (), která zní pro odstranění úvodní a koncové mezery.
  • Pro více kontrolované odstranění mezer můžeme použít replaceAll(), replace(), replaceFirst()

Související témata

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.

Previous post Maine Coon vs Ragdoll: Ultimate Breed Comparison-Maine Coon Central
Next post 7 Způsobů, jak Udržet Si Obsazeno, Když Jste Přilepená Doma