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.
- trim(): Odstraní úvodní a koncové mezery z řetězce
- strip(): Odstraní mezery na začátku a na konci řetězce. Strip metoda je znakovou sadu Unicode vědomi,
- > střihu vs pásu: Rozdíly mezi obložení a metodu
- stripLeading(): Odstraňuje bílá místa pouze od začátku řetězce
- stripTrailing(): Odstraňuje bílá místa pouze z konec řetězce
- replace () – nahradit: Nahradí všechny cílové postavy s novými znak
- 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
- replaceAll vs nahradit: Rozdíly mezi replace a replaceAll metoda
- replaceFirst(): Nahrazuje pouze první výskyt cíl podřetězec s novou náhradní řetězec
Různé způsoby, jak odstranit mezery z řetězce v jazyce java
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()