How can I trim beginning and ending double quotes from a string?

JavaStringTrim

Java Problem Overview


I would like to trim a beginning and ending double quote (") from a string.
How can I achieve that in Java? Thanks!

Java Solutions


Solution 1 - Java

You can use String#replaceAll() with a pattern of ^\"|\"$ for this.

E.g.

string = string.replaceAll("^\"|\"$", "");

To learn more about regular expressions, have al ook at http://regular-expression.info.

That said, this smells a bit like that you're trying to invent a CSV parser. If so, I'd suggest to look around for existing libraries, such as OpenCSV.

Solution 2 - Java

To remove the first character and last character from the string, use:

myString = myString.substring(1, myString.length()-1);

Solution 3 - Java

Also with Apache StringUtils.strip():

 StringUtils.strip(null, *)          = null
 StringUtils.strip("", *)            = ""
 StringUtils.strip("abc", null)      = "abc"
 StringUtils.strip("  abc", null)    = "abc"
 StringUtils.strip("abc  ", null)    = "abc"
 StringUtils.strip(" abc ", null)    = "abc"
 StringUtils.strip("  abcyx", "xyz") = "  abc"

So,

final String SchrodingersQuotedString = "may or may not be quoted";
StringUtils.strip(SchrodingersQuotedString, "\""); //quoted no more

This method works both with quoted and unquoted strings as shown in my example. The only downside is, it will not look for strictly matched quotes, only leading and trailing quote characters (ie. no distinction between "partially and "fully" quoted strings).

Solution 4 - Java

If the double quotes only exist at the beginning and the end, a simple code as this would work perfectly:

string = string.replace("\"", "");

Solution 5 - Java

This is the best way I found, to strip double quotes from the beginning and end of a string.

someString.replace (/(^")|("$)/g, '')

Solution 6 - Java

First, we check to see if the String is doubled quoted, and if so, remove them. You can skip the conditional if in fact you know it's double quoted.

if (string.length() >= 2 && string.charAt(0) == '"' && string.charAt(string.length() - 1) == '"')
{
	string = string.substring(1, string.length() - 1);
}

Solution 7 - Java

#Kotlin In Kotlin you can use String.removeSurrounding(delimiter: CharSequence)

E.g.

string.removeSurrounding("\"")

>Removes the given delimiter string from both the start and the end of this string if and only if it starts with and ends with the delimiter. Otherwise returns this string unchanged.

The source code looks like this:

public fun String.removeSurrounding(delimiter: CharSequence): String = removeSurrounding(delimiter, delimiter)

public fun String.removeSurrounding(prefix: CharSequence, suffix: CharSequence): String {
    if ((length >= prefix.length + suffix.length) && startsWith(prefix) && endsWith(suffix)) {
        return substring(prefix.length, length - suffix.length)
    }
    return this
}

Solution 8 - Java

Using Guava you can write more elegantly CharMatcher.is('\"').trimFrom(mystring);

Solution 9 - Java

I am using something as simple as this :

if(str.startsWith("\"") && str.endsWith("\""))
		{
			str = str.substring(1, str.length()-1);
		}

Solution 10 - Java

To remove one or more double quotes from the start and end of a string in Java, you need to use a regex based solution:

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

If you need to also remove single quotes:

String result = input_str.replaceAll("^[\"']+|[\"']+$", "");

NOTE: If your string contains " inside, this approach might lead to issues (e.g. "Name": "John" => Name": "John).

See a Java demo here:

String input_str = "\"'some string'\"";
String result = input_str.replaceAll("^[\"']+|[\"']+$", "");
System.out.println(result); // => some string

Solution 11 - Java

Edited: Just realized that I should specify that this works only if both of them exists. Otherwise the string is not considered quoted. Such scenario appeared for me when working with CSV files.

org.apache.commons.lang3.StringUtils.unwrap("\"abc\"", "\"")    = "abc"
org.apache.commons.lang3.StringUtils.unwrap("\"abc", "\"")    = "\"abc"
org.apache.commons.lang3.StringUtils.unwrap("abc\"", "\"")    = "abc\""

Solution 12 - Java

The pattern below, when used with java.util.regex.Matcher, will match any string between double quotes without affecting occurrences of double quotes inside the string:

"[^\"][\\p{Print}]*[^\"]"

Solution 13 - Java

Matcher m = Pattern.compile("^\"(.*)\"$").matcher(value);
String strUnquoted = value;
if (m.find()) {
    strUnquoted = m.group(1);
}

Solution 14 - Java

Modifying @brcolow's answer a bit

if (string != null && string.length() >= 2 && string.startsWith("\"") && string.endsWith("\"") {
    string = string.substring(1, string.length() - 1);
}

Solution 15 - Java

private static String removeQuotesFromStartAndEndOfString(String inputStr) {
    String result = inputStr;
    int firstQuote = inputStr.indexOf('\"');
    int lastQuote = result.lastIndexOf('\"');
    int strLength = inputStr.length();
    if (firstQuote == 0 && lastQuote == strLength - 1) {
        result = result.substring(1, strLength - 1);
    }
    return result;
}

Solution 16 - Java

Scala

s.stripPrefix("\"").stripSuffix("\"")

This works regardless of whether the string has or does not have quotes at the start and / or end.

Edit: Sorry, Scala only

Solution 17 - Java

find indexes of each double quotes and insert an empty string there.

Solution 18 - Java

public String removeDoubleQuotes(String request) {
    return request.replace("\"", "");
}

Solution 19 - Java

Groovy

You can subtract a substring from a string using a regular expression in groovy:

String unquotedString = theString - ~/^"/ - ~/"$/

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionufkView Question on Stackoverflow
Solution 1 - JavaBalusCView Answer on Stackoverflow
Solution 2 - JavaMichael MyersView Answer on Stackoverflow
Solution 3 - JavarathView Answer on Stackoverflow
Solution 4 - JavasunraincyqView Answer on Stackoverflow
Solution 5 - JavaYaniv LeviView Answer on Stackoverflow
Solution 6 - JavabrcolowView Answer on Stackoverflow
Solution 7 - JavaRyan AmaralView Answer on Stackoverflow
Solution 8 - JavalegrassView Answer on Stackoverflow
Solution 9 - JavautkarshView Answer on Stackoverflow
Solution 10 - JavaWiktor StribiżewView Answer on Stackoverflow
Solution 11 - JavaraisercostinView Answer on Stackoverflow
Solution 12 - JavaAlex FView Answer on Stackoverflow
Solution 13 - JavaRavikiranView Answer on Stackoverflow
Solution 14 - JavaAlbatrossView Answer on Stackoverflow
Solution 15 - Javam0untpView Answer on Stackoverflow
Solution 16 - JavaBrendan MaguireView Answer on Stackoverflow
Solution 17 - JavaGuruKulkiView Answer on Stackoverflow
Solution 18 - JavaGurunath KulkarniView Answer on Stackoverflow
Solution 19 - JavaJoman68View Answer on Stackoverflow