我有一组String
s,其中第一个和最后一个字符是双引号。以下是一个例子。
String x = "‘Gravity’ tops the box office for 3rd week | New York Post"
其他一些字符串在文本中间会包含双引号,因此我无法使用String.replaceAll()
。我只需要删除第一个和最后一个双引号。我怎么能这样做?
答案 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('"')
仅删除唯一的第一个(开始)字符