【发布时间】:2017-05-08 23:10:44
【问题描述】:
我想从字符串的两端删除单引号或双引号。该字符串可能包含额外的引号或/和双引号,它们应保持不变 - 所以removeAll() 不是一个选项。
String one = "\"some string\"";
String two = "'some \"other string\"'";
// expected result
// some string
// some "other string"
到目前为止我尝试了什么:
two = two.replace("/^[\"\'])|([\"\']$/g", "");
以下方法可行,但必须有更优雅的方法来实现这一点..
if ((one != null && one.length() > 1) && ((one.startsWith("\"") && one.endsWith("\"")) ||
(one.startsWith("\'") && one.endsWith("\'")))) {
one = one.substring(1, one.length() - 1);
}
有什么想法吗?
更新/澄清
我的用例是应用程序的命令行界面,用户也可以将文件/路径拖入其中,而不是输入它们。
在 Windows 下,拖动的文件用双引号括起来,在 Linux 下用单引号括起来。我想做的就是摆脱它们。所以在我的用例中,引号总是对称的(它们匹配)。
但我完全可以接受一个解决方案,即使它们不匹配也会剥离它们,因为它们总是匹配
【问题讨论】:
-
您发布的代码以各种方式无效。请确保您发布实际编译的代码,除非您询问编译时错误。
-
Java 还是 JavaScript?
removeAll()?你能调整一下问题/标签吗? -
@Wiktor Stribiżew JAVA
-
所以请发布有效的 Java 代码 - 并阐明您的要求。 (请参阅我的答案的评论。目前尚不清楚这是否是所需的行为。)
-
不,代码仍然无法编译,如果您调用
replace,则根本不使用正则表达式。你还没有明确你的要求。 minimal reproducible example(显示多个输入和预期输出)会有很大帮助。