我正在尝试将String builder转换为java中的String数组。我使用 到String 方法将Stringbuilder转换为String然后使用 拆分 方法将其转换为String数组。
我在数组大小方面遇到了一些问题。 “字符串”构建器的输出如下:0,,1,,,,,,,,,,2,,,
。实际上它包含15个元素,但它显示了stringbuilder的大小为18.并且在转换为String数组后,它显示的大小为13。
我做错了方法吗?是否有其他方法将String builder转换为String Array?
StringBuilder output = new StringBuilder();
for (String str : listToSearch) {
int index = findIndex(headerArrayList, str);
if (index > -1) {
output.append(index);
} else {
output.append(str);
}
output.append(",");
}
String out = output.toString();
String[] destIndexArray = out.split(",");
findIndex
方法:
private static int findIndex(List<String> headerList, String element) {
for (int i = 0; i < headerList.size(); i++) {
if (headerList.get(i).equals(element)) {
return i;
}
}
return -1;
}
答案 0 :(得分:4)
我做错了方法吗?
您的代码需要改进的地方很多。我在暗示一些:
String
而不是索引。for (String str :listToSearch) {
int index=headerArrayList.indexOf(str);
if (index < 0) {
output.append(str);
output.append(",");
}
// if(!headerArrayList.contains(str))
// output.append(str);
// output.append(",");
}
List<String>
代替StringBuilder
。是否有其他方法可以将String builder转换为String Array?
是的,但如果您遵循以上几点,则不需要它。但既然你问过。请参阅:How can a StringBuilder best be converted to a String[]?
答案 1 :(得分:1)
请参阅使用stringbuilder并再次操作它并将其转换为数组并不是一个好主意。而是将所有内容插入到字符串列表中,并检查字符串是否为整数,请使用:
str.matches("^-?\\d+$");
如果您想将其转换为数组,您可以这样做
String[] str = list.toArray(new String[list.size()])
答案 2 :(得分:0)
您是否只是尝试了一行代码
stringBuilder.toString.split("delimiter")
?
在您的情况下,可能看起来像
destIndexArray = output.toString.split(",")
如果这不起作用,那么您可以执行此操作而不是转换为StringBuilder
List<String> output = new List<String>();
for (String str : listToSearch) {
int index = findIndex(headerArrayList, str);
if (index > -1) {
output.add(index);
} else {
output.add(str);
}
}
我认为在这种情况下你可以对你的列表做任何事情,不需要分隔符。希望它有所帮助!