Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将字符串[“场景1”、“场景2”]转换为数组_Java_Arrays_Text - Fatal编程技术网

Java 将字符串[“场景1”、“场景2”]转换为数组

Java 将字符串[“场景1”、“场景2”]转换为数组,java,arrays,text,Java,Arrays,Text,我有以下代码: 我需要将文本转换为数组。我知道我可以替换[]并进行拆分,但有没有简单的方法?看起来,你的意思是[\String 1\,\String 2\] 当然,您可以使用jackson ObjectMapper将其像json字符串一样读取并反序列化到数组。但这看起来并不简单。我能想到的最短版本是: String text = "['Stack1', 'Stack2']"; String[] splitted = text.split("\\['|', *'|'\\]"); 编辑:我刚刚看到

我有以下代码:

我需要将文本转换为数组。我知道我可以替换[]并进行拆分,但有没有简单的方法?

看起来,你的意思是[\String 1\,\String 2\]
当然,您可以使用jackson ObjectMapper将其像json字符串一样读取并反序列化到数组。但这看起来并不简单。

我能想到的最短版本是:

String text = "['Stack1', 'Stack2']";
String[] splitted = text.split("\\['|', *'|'\\]");
编辑:我刚刚看到,数组中的第一个条目将是一个空字符串。因此,最好在其中一条评论中使用解决方案:

String[] splitted2 = text.replaceAll("\\[|\\]|'", "").split(", *");
顺便说一句,这允许用逗号+空格或不带空格的逗号分隔元素。

如果您知道文本格式良好,可以使用String.substring而不是regex

String text = "['Stack1', 'Stack2']";
StringTokenizer tkn = new StringTokenizer(text.substring(1, text.length() - 1), ", ");
while (tkn.hasMoreTokens()) {
    String v = tkn.nextToken();
    System.out.println(v.substring(1, v.length() - 1)); // Stack1 Stack2
}

我想您可以在上拆分,这将为您提供一个包含以下内容的数组:[,场景1,场景2]


然后就是用一个奇数索引取每个值,找到最终的数组,这只是一个简单的数学计算。我认为这是相当有效的,因为它涉及更少的字符串操作,但我不知道做更多拆分的开销是否值得

该代码无法编译。此字符串看起来不正确。。。太多了,我换了code@RobbyCornelissen说代码不会编译,我想在一个方法中,例如toArray或similarI,对不起,我显然需要更多的咖啡。这样就可以了:String[]parts=text.replaceAll[\\[\\]'],.split,;我进入系统=>StackYou做错了什么,请看我使用instanceof',可能是问题吗?在我的控制台中:原始:[场景1,场景2]更改:[场景1,场景2]
String text = "['Stack1', 'Stack2']";
StringTokenizer tkn = new StringTokenizer(text.substring(1, text.length() - 1), ", ");
while (tkn.hasMoreTokens()) {
    String v = tkn.nextToken();
    System.out.println(v.substring(1, v.length() - 1)); // Stack1 Stack2
}