如何克服ArrayList字符串分隔“”和''?

时间:2014-12-15 09:50:44

标签: java arrays string arraylist

我有一个定义为

的数组列表
List<String> cmd = new ArrayList<String>();

我正在以这种方式向此List添加其他字符串

  cmd.add("/c");
  cmd.add(command);

但是如果命令包含&#34; &#34;或者&#39; &#39;并且它们之间有一个空格,引号被截断。 如何解决此问题?

例如,如果命令是

grep "Hello world" /sratch/temp

cmd包含这些字符串/c grep Hello World /scratch/temp

但是,如果命令是grep "Hello\ world" /sratch/temp

cmd中的字符串是

/c grep " Hello World " /scratch/temp

如何编程以便&#34; &#34;是不是被截断了?

4 个答案:

答案 0 :(得分:1)

所以你希望你的String对象包含引号?尝试用反斜杠转义它们:

cmd.add("some string with \"quotes\"");

答案 1 :(得分:1)

此问题与ArrayList无关,当您将它们分配给String对象或从用户输入检索它们时,您必须简单地转义单引号和双引号。有关Java中转义序列的更多信息,请查看Oracle网站上的this tutorial

答案 2 :(得分:0)

您可以转义引号,只需写下:

"grep \"Hello world\" /sratch/temp"

您可以查看this了解更多信息

修改 如果您正在解析用户输入,Java将自动转义此特殊字符。例如,使用以下代码:

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"

您将获得此字符串:

enter image description here

答案 3 :(得分:0)

这实际上不是关于Java,而是关于你正在使用的shell。

在shell(即bash,命令提示符等)上,参数通常使用空格分解。

例如,

java my.class The quick brown fox

会产生

的参数列表
String[] { "The", "quick", "brown", "fox" }

但是,shell通常允许用户通过用双引号括起来将多个间隔的字符串作为单个参数 - 您正在看到的行为。

例如,

java my.class The quick "brown fox"

会产生

的参数列表
String[] { "The", "quick", "brown fox" }

这意味着双引号将从参数列表中删除,并且字面插入字符串。


如果我的假设是正确的,并且您在给定某种其他命令系统的情况下通过程序运行shell命令,那么您可以简单地用双引号括起命令的每个部分。