将此字符串转换为字符串数组的最佳方法是什么?

时间:2020-01-29 22:02:57

标签: java arrays string split

我正在实现一个游戏服务器,并将游戏板表示为字符串,以这种状态为例:

String b = ", a36, a32, a26, a40, a295, a41, a49, /, , a16, a09, a68, a11, a99, ,"

我想将此字符串转换为以下字符串数组:

[, a36, a32, a26, a40, a295, a41, a49, , , , a16, a09, a68, a11, a99, ]

我尝试使用String.split

String[] bArray = b.split("/|,");

这将产生:

boardArray = [, a36, a32, a26, a40, a295, a41, a49, , , , a16, a09, a68, a11, a99]

它切断了我想要的数组中的最后一个" "元素。修改代码并手动添加最后一个元素后:

String[] bArray = b.split("/|,");
bArray = Arrays.copyOf(bArray, bArray.length + 1);
bArray[bArray.length - 1] = "";

这给我正确的结果,但是此解决方案效率低下。有谁知道如何更干净地做到这一点?

3 个答案:

答案 0 :(得分:4)

尝试一下:

b.split("/|,", -1);

这是用限制参数(第二个)和documenation所说的:

limit参数控制应用图案的次数,因此会影响结果数组的长度。如果限制n大于零,则将最多应用n-1次该模式,该数组的长度将不大于n,并且该数组的最后一个条目将包含除最后一个匹配的定界符之外的所有输入。如果n为非正数,则该模式将被尽可能多地应用,并且数组可以具有任何长度。如果n为零,则将尽可能多地应用该模式,该数组可以具有任意长度,并且尾随的空字符串将被丢弃。

答案 1 :(得分:1)

尝试加载到List<String>并遍历该列表。

String b = ", a36, a32, a26, a40, a295, a41, a49, /, , a16, a09, a68, a11, a99, ,";
List<String> myList = Arrays.asList(b.split(","));
System.out.println(myList);

输出:

[,  a36,  a32,  a26,  a40,  a295,  a41,  a49,  /,  ,  a16,  a09,  a68,  a11,  a99,  ]

答案 2 :(得分:0)

previous question上所述,java具有默认行为。

有时候您必须实现自己的新功能,但这可能不是一个干净的解决方案。