Java >> Java tutorial >  >> Tag >> String

Fjern begyndende og afsluttende dobbelte anførselstegn fra en streng

1. Oversigt

I denne artikel skal vi studere forskellige metoder til fjernelse af begyndende og afsluttende dobbelte anførselstegn fra en streng i Java .

Det, vi vil udforske her, kan være nyttigt til at behandle tekst, der er udtrukket fra filer eller modtaget fra andre kilder.

2. Simpel tilgang:understrengen Metode

Lad os først starte med en simpel tilgang ved at bruge understrengen metode . Denne metode kan kaldes på en streng objekt for at returnere en bestemt understreng.

Metoden kræver to parametre:

  1. beginIndex — indekset for tegnet, hvor understrengen skal begynde
  2. endIndex — indekset efter, hvor understrengen skal slutte

Altså i betragtning af, at vores input String er omgivet af dobbelte anførselstegn, kan vi bruge understrengen metode:

String input = "\"text wrapped in double quotes\"";
String result = input.substring(1, input.length() - 1);
System.out.println("Input: " + input);
System.out.println("Result: " + result);

Ved at udføre koden ovenfor har vi følgende output:

Input: "text wrapped in double quotes"
Result: text wrapped in double quotes

Når vi er usikre på, om strengen vil være omgivet af dobbelte anførselstegn eller ej, bør vi kontrollere det, før vi kører understrengen metode:

if (input != null && input.length() >= 2 
      && input.charAt(0) == '\"' && input.charAt(input.length() - 1) == '\"') {
    result = input.substring(1, input.length() - 1);
}

I eksemplet ovenfor kontrollerer vi, at strengen har mindst to tegn, og at den starter og slutter med dobbelte anførselstegn.

3. Brug af replaceAll Metode

Ud over understrengen metode, kan vi også bruge replaceAll metode. Denne metode erstatter alle dele af strengen der matcher et givet regulært udtryk . Bruger replaceAll , vi kan fjerne alle forekomster af dobbelte anførselstegn ved at erstatte dem med tomme strenge:

String result = input.replaceAll("\"", "");

På den ene side har denne tilgang den fordel, at den fjerner alle forekomster af dobbelte anførselstegn, selvom strengen har flere linjer. På den anden side, med denne tilgang, er vi ikke i stand til kun at fjerne de dobbelte anførselstegn i begyndelsen og slutningen af ​​strengen.

For at fjerne dobbelte anførselstegn kun fra begyndelsen og slutningen af ​​ String , vi kan bruge et mere specifikt regulært udtryk:

String result = input.replaceAll("^\"|\"$", "");

Efter at have udført dette eksempel, forekomster af dobbelte anførselstegn i begyndelsen eller slutningen af ​​strengen vil blive erstattet af tomme strenge.

For at forstå denne tilgang, lad os nedbryde vores regulære udtryk.

For det første har vi et anførselstegn (^) efterfulgt af undslupne dobbelte anførselstegn (\”) for at matche dobbelte anførselstegn i begyndelsen af ​​strengen . Derefter er der et rørsymbol (|) for at angive et matchende alternativ - svarende til den logiske OR-operator.

Endelig har vi undslippet dobbelte anførselstegn efterfulgt af et dollarsymbol ($) for at matche dobbelte anførselstegn i slutningen af ​​strengen .

4. Brug af Guava

En anden mulig tilgang til at fjerne dobbelte anførselstegn fra begyndelsen og slutningen af ​​en streng er at bruge CharMatcher klasse fra Guava-biblioteket :

String result = CharMatcher.is('\"').trimFrom(input);

Denne tilgang er lettere at forstå og fjerner kun begyndelses- og slutanførselstegn fra strengen . Men for at denne tilgang skal fungere, skal vi tilføje guava bibliotek til vores projekt:

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>${guava-version}</version>
</dependency>

I dette tilfælde skal vi indstille ${guava-versionen} egenskab til den version, vi ønsker at bruge.

5. Konklusion

I denne artikel undersøgte vi forskellige alternativer til fjernelse af dobbelte anførselstegn i begyndelsen og slutningen af ​​en String . Vi kan anvende enhver af disse tilgange i praksis. Hver af dem har fordele og ulemper.

Når vi fx bruger Guava-biblioteket, har vi en enkel og elegant løsning. Men hvis Guava ikke var inkluderet i vores projekt, ville denne løsning kræve tilføjelse af en ny afhængighed.

Som altid er koden præsenteret i denne artikel tilgængelig på GitHub.


Java tag