有什么区别
alert("abc".substr(0,2));
Run Code Online (Sandbox Code Playgroud)
和
alert("abc".substring(0,2));
Run Code Online (Sandbox Code Playgroud)
他们似乎都输出"ab".
我想从字符串的两端删除单引号或双引号.该字符串可能包含其他引号或/和双引号,它们应保持不变 - 因此removeAll()
不是一个选项.
String one = "\"some string\"";
String two = "'some \"other string\"'";
// expected result
// some string
// some "other string"
Run Code Online (Sandbox Code Playgroud)
到目前为止我尝试了什么:
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);
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
更新/澄清
我的用例是应用程序的命令行界面,用户也可以将文件/路径拖入,而不是键入它们.
在Windows下,拖动的文件被双引号包围,在Linux下用单引号.我想做的就是摆脱它们.所以在我的用例中,引号总是对称的(它们匹配).
但是我可以完美地使用一种解决方案,即使它们不匹配也会剥离它们,因为它们总是这样做