将带引号的Java字符串拆分为不带引号的参数

将带引号的Java字符串拆分为不带引号的参数,java,split,Java,Split,我需要将字符串拆分为3个参数,每个参数都是引号中的参数,并将它们存储在单独的变量中 这是我的。下面的代码接受所有命令行参数,并将它们组合成一个大的字符串 我需要转换的字符串示例: “METRO Blue Line” “Target Field Station Platform 1” “south” 它应成为: var1 = METRO Blue Line var2 = Target Field Station Platform 1 var3 = south 我已经尝试了很多split(“\”

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

这是我的。下面的代码接受所有命令行参数,并将它们组合成一个大的
字符串

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

“METRO Blue Line” “Target Field Station Platform 1” “south”
它应成为:

var1 = METRO Blue Line
var2 = Target Field Station Platform 1
var3 = south
我已经尝试了很多
split(“\”)
方法,但不管出于什么原因,它甚至没有为我删除引号

// Construct a string to hold the whole args. 
// Implemented it this way because args is separated by spaces
String combine = "";
for(int i = 0; i < args.length; i++)
{
    combine = combine.concat(args[i]);
    combine = combine.concat(" ");
}
System.out.println(combine);
//构造一个字符串来保存整个参数。
//这样实现是因为args由空格分隔
字符串组合=”;
对于(int i=0;i
您使用的是曲线引号(也称为智能引号)标记,而不是代码中的记帐

Pattern pattern = Pattern.compile("[“”]");
    String text = "“METRO Blue Line” “Target Field Station Platform 1” “south” ";
    String arr[] = text.split("\\”");
    for (int i = 0; i < arr.length; i++) {
        System.out.println(pattern.matcher(arr[i]).replaceAll("").trim());
    }
Pattern=Pattern.compile(“[”“]”);
字符串text=”“METRO Blue Line”“目标现场站站台1”“south”“;
字符串arr[]=text.split(“\\”);
对于(int i=0;i
您使用的是曲线引号(也称为智能引号)标记,而不是代码中的记帐

Pattern pattern = Pattern.compile("[“”]");
    String text = "“METRO Blue Line” “Target Field Station Platform 1” “south” ";
    String arr[] = text.split("\\”");
    for (int i = 0; i < arr.length; i++) {
        System.out.println(pattern.matcher(arr[i]).replaceAll("").trim());
    }
Pattern=Pattern.compile(“[”“]”);
字符串text=”“METRO Blue Line”“目标现场站站台1”“south”“;
字符串arr[]=text.split(“\\”);
对于(int i=0;i
符号
与符号
不同。如果使用
拆分(“\”)
进行拆分,显然会搜索
,但不会搜索其他引号符号

您可以使用
匹配器及其
查找
方法轻松提取它们。或者使用正确分隔符的拆分方法
拆分(“”)
。请注意,第一个和最后一个元素将有一个引号,只需将其删除即可


输出为:

METRO Blue Line
Target Field Station Platform 1
south


这种方法的一个优点是它非常有效,没有额外的替换或类似的东西,只需在输入上进行一次迭代即可。

符号
与符号
不同。如果使用
拆分(\”)
进行拆分,显然会搜索
但不适用于其他引号符号

您可以使用
匹配器及其
查找
方法轻松提取它们。或者使用正确分隔符的拆分方法
拆分(“”)
。请注意,第一个和最后一个元素将有一个引号,只需将其删除即可


输出为:

METRO Blue Line
Target Field Station Platform 1
south


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

为了与原始答案的正则表达式主题保持一致,我重写了我的答案,以找到普通引号或智能引号

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);
}
String text=”“地铁蓝线”“目标现场站1号站台”“南部”“;
字符串regex=“\”([^\”]*)\“|”([^“]*)”;
ArrayList listOfStrings=新的ArrayList();
Matcher m=Pattern.compile(regex).Matcher(text);
while(m.find()){
如果(m.group(1)!=null){
添加(m.group(1));
} 
如果(m.group(2)!=null){
添加(m组(2));
}
}
用于(字符串温度:ListOfstring){
系统输出打印项次(温度);
}

为了与原始答案的正则表达式主题保持一致,我重写了我的答案,以找到普通引号或智能引号

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);
}
String text=”“地铁蓝线”“目标现场站1号站台”“南部”“;
字符串regex=“\”([^\”]*)\“|”([^“]*)”;
ArrayList listOfStrings=新的ArrayList();
Matcher m=Pattern.compile(regex).Matcher(text);
while(m.find()){
如果(m.group(1)!=null){
添加(m.group(1));
} 
如果(m.group(2)!=null){
添加(m组(2));
}
}
用于(字符串温度:ListOfstring){
系统输出打印项次(温度);
}
您可以使用Java8中的String.join()。代码示例

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

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

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


您的
字符串是否包含智能引号?@Runesr4nerds如果用户回答了您的问题,请也接受他的回答()。如果不超过,请指定尚未回答的问题,这是StackOverflow的关键部分,非常感谢。您的
字符串是否包含智能引号?@Runesr4nerds如果用户回答了您的问题,请也接受他的回答()。如果没有,请说明还有什么问题没有回答,这是StackOverflow的一个非常重要的部分,非常感谢。请注意,OP的输入不是
,而是
(智能引号)。这些是不同的符号,因此您的代码不会与特定于OPs的输入一起工作。但是,我喜欢您展示一种
Matcher#find
方法。请注意,OP的输入没有
,而是
(智能引号)。这些是不同的符号,因此您的代码将无法使用OPs特定的输入。然而,我喜欢你展示一种
Matcher#find
方法。这里不需要双重
replaceAll
,并且会增加开销(特别是如果OP希望在大数据集上使用该代码)。该方法接受一个正则表达式,由于您对两个引号的操作是相同的,您只需使用
replaceAll(“[”“]”,“”)
。此外,转义是不必要的,它们对于正则表达式没有特殊符号。但尽管如此,这个答案还是很有用的