删除第一个和最后一个双引号

时间:2014-02-19 06:52:50

标签: java regex string

我有一组String s,其中第一个和最后一个字符是双引号。以下是一个例子。

String x = "‘Gravity’ tops the box office for 3rd week  | New York Post"

其他一些字符串在文本中间会包含双引号,因此我无法使用String.replaceAll()。我只需要删除第一个和最后一个双引号。我怎么能这样做?

6 个答案:

答案 0 :(得分:12)

如果"字符始终是第一个和最后一个字符,则不需要正则表达式。只需使用substring

x = x.substring(1, x.length() - 1)

答案 1 :(得分:4)

试试这段代码:

public class Example {
    public static void main(String[] args) {
        String x = "\"‘Gravity’ tops the box office for 3rd week  | New York Post\"";
        String string = x.replaceAll("^\"|\"$", "");

        System.out.println(string);     
    }
}   

它给出了:

‘Gravity’ tops the box office for 3rd week  | New York Post

答案 2 :(得分:3)

试试这个正则表达式

s = s.replaceAll("\"(.+)\"", "$1");

答案 3 :(得分:0)

尝试org.apache.commons.lang3.StringUtils#strip(String str,String stripChars)

StringUtils.strip("‘Gravity’ tops the box office for 3rd week  | New York Post", "\""); // no quotes
StringUtils.strip("\"‘Gravity’ tops the box office for 3rd week  | New York Post\"", "\""); // with quotes
StringUtils.strip("\"\"\"‘Gravity’ tops the box office for 3rd week  | New York Post\"", "\"\""); // with multiple quotes - beware all of them are trimmed!

所有给予:

‘Gravity’ tops the box office for 3rd week  | New York Post

答案 4 :(得分:0)

如果该字符串不总是用引号引起来,并且您不确定是否用引号引起来,则可以使用以下正则表达式;

str.replace(/^\"(.+)\"$/,"$1")

从样式表中获取font-family时,这可能也很有用。字体家族属性可能返回诸如Arial"Open Sans"之类的值。

答案 5 :(得分:-1)

你能做的最好的事情是

str.Trim('"')

双引号括在两个单引号中,就是这样。 这种技术不仅限于双引号,但你可以为任何角色做。

此外,如果你想对开始或结束字符(不是两者)做同样的事情,那么就有了一个选项。你可以做同样的事情,比如

str.TrimEnd('"')

这只删除了最后一个字符 和

str.TrimStart('"')

仅删除唯一的第一个(开始)字符