将带引号的Java字符串拆分为没有引号的args

时间:2017-08-17 02:58:33

标签: java split

我需要将我的字符串拆分为3个 args ,每个 arg 都在引号内,并将它们存储在单独的变量中。

这就是我所拥有的。下面的代码获取所有命令行参数,并将它们组合成一个大的<p>\r\n\t<img alt=\"\" src=\"/upload/201704/28/201704281438586869.jpg\" /> \r\n</p>\r\n<p>\r\n\t<img alt=\"\" src=\"/upload/201704/28/201704281439101401.jpg\" /> \r\n</p>\r\n<p>\r\n\t<img alt=\"\" src=\"/upload/201704/28/201704281439283119.jpg\" /> \r\n</p>\r\n<p>\r\n\t<img alt=\"\" src=\"/upload/201704/28/201704281439479213.jpg\" /> \r\n</p>\r\n<p>\r\n\t<img alt=\"\" src=\"/upload/201704/28/201704281440090151.jpg\" /> \r\n</p>\r\n<p>\r\n\t<img alt=\"\" src=\"/upload/201704/28/201704281440244369.jpg\" /> \r\n</p>

我需要转换的字符串示例:

String

应该成为:

“METRO Blue Line” “Target Field Station Platform 1” “south”

我已经尝试了var1 = METRO Blue Line var2 = Target Field Station Platform 1 var3 = south ,但无论出于什么原因,它甚至都不会删除我的引号。

split("\"")

4 个答案:

答案 0 :(得分:1)

您使用的是弯曲引号(又名智能引号)标记,而不是在代码中进行记帐

if __name__ == __main__

答案 1 :(得分:1)

符号与符号"不同。如果您使用split("\"")进行拆分,则显然会搜索",但不会搜索其他引号符号

您可以使用Matcher及其find方法轻松提取它们。或者,也可以使用正确的分隔符split("” “")来使用拆分方法。请注意,第一个和最后一个元素将具有单引号,只需将其删除即可。

String input = "“METRO Blue Line” “Target Field Station Platform 1” “south”";
String[] elements = input.split("” “");

// Remove first quote
elements[0] = elements[0].substring(1);
// Remove last quote
String lastElement = elements[elements.length - 1];
elements[elements.length - 1] = lastElement.substring(0, lastElement.length() - 1);

// Output all results
for (String element : elements) {
    System.out.println(element);
}

输出结果为:

METRO Blue Line
Target Field Station Platform 1
south

这种方法的一个优点是它非常高效,没有额外的替换或类似的东西,只需对输入进行一次迭代,仅此而已。

答案 2 :(得分:0)

为了与原始答案的RegEx主题保持一致,我重写了我的答案,以找到正常的引号或智能引号。

String text = "“METRO Blue Line” “Target Field Station Platform 1” “south”";

String regex = "\"([^\"]*)\"|“([^”]*)”";

ArrayList<String> listOfStrings = new ArrayList<>();

Matcher m = Pattern.compile(regex).matcher(text);
while (m.find()) {
    if (m.group(1) != null) {
        listOfStrings.add(m.group(1));
    } 
    if (m.group(2) != null) {
        listOfStrings.add(m.group(2));
    }
}
for (String temp : listOfStrings) {
    System.out.println(temp);
}

答案 3 :(得分:0)

您可以使用java 8中的String.join()。代码示例

String[] strArray = { "How", "To", "Do", "In", "Java" };
String joinedString = String.join(", ", strArray);System.out.println(joinedString);

输出:

How,To,Do,In,Java