我有一个数组列表,定义为
List<String> cmd = new ArrayList<String>();我将以这种方式将其他字符串添加到此列表中
cmd.add("/c");
cmd.add(command);但是,如果命令包含“”或“”,并且它们之间有空格,则引号将被截断。如何解决此问题?
例如,如果命令是
grep "Hello world" /sratch/temp
cmd包含这些字符串/c grep Hello World /scratch/temp
但是,如果命令为grep "Hello\ world" /sratch/temp
cmd中的字符串为
/c grep " Hello World " /scratch/temp
我如何对它进行编程,使“”不被截断?
发布于 2014-12-15 17:53:36
所以您希望您的String对象包含引号?尝试用反斜杠对它们进行转义:
cmd.add("some string with \"quotes\"");
发布于 2014-12-15 17:57:30
这个问题与ArrayList无关,当您将单引号和双引号赋值给String对象或从用户输入中检索它们时,您只需对它们进行转义。有关Java中转义序列的更多信息,例如,可以在Oracle站点上查看this tutorial。
发布于 2014-12-15 17:53:23
你可以转义引号,只需写下:
"grep \"Hello world\" /sratch/temp"您可以查看this,了解更多信息
如果您正在解析用户输入,将自动转义这些特殊字符。例如,使用以下代码:
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.nextLine();
System.out.println("Input:"+s);
}
}输入:Testing "Quotes"
您将获得以下字符串:

https://stackoverflow.com/questions/27481282
复制相似问题