我需要帮助创建一个分割字符串的循环。到目前为止,我有以下代码。
System.out.println("*FILE HAS BEEN LOCATED*");
System.out.println("*File contains: \n");
List<String> lines = new ArrayList<String>();
while (scan.hasNextLine())
{
lines.add(scan.nextLine());
}
String[] arr = lines.toArray(new String[0]);
String str_array = Arrays.toString(arr);
String[] arraysplit;
arraysplit = str_array.split(":");
for (int i=0; i<arraysplit.length; i++)
{
arraysplit[i] = arr[i].trim();
System.out.println(arr[i]);
}
其中一个字符串的示例是
Firstname : Lastname : age
我希望它将字符串拆分为另一个看起来像这样的数组:
Firstname
Lastname
age
我在运行代码时仍然遇到错误,似乎当我将数组转换为字符串时,它会将逗号放入字符串中,因此当我尝试拆分字符串时会导致问题:不,
答案 0 :(得分:5)
问题:您正在使用旧数组arr
来显示值,而arraysplit
将得到split
方法的结果值,因此您需要应用{{ 1}}在trim()
的元素上,并将元素分配回相同的索引
arraysplit
简化解决方案(列表到数组和数组到字符串复杂化)
1。)创建长度为String[] arraysplit;
arraysplit = str_array.split(":");
for (int i=0; i<arraysplit.length; i++)
{
arraysplit[i] = arraysplit[i].trim();
// ^^^^^^^^^^^^ has values with spaces
System.out.println(arr[i]);
}
System.out.println(arraysplit[i]);
2。)sizeOfList * 3
使用split
3.使用带有\\s*:\\s*
的数组副本作为结果数组的索引来保持数组索引的跟踪
j
您可以使用regex
String result[] = new String [lines.size()*3];
int j=0;
for (int i=0; i<lines.size(); i++)
{
System.arraycopy(lines.get(0).split("\\s*:\\s*"), 0, result, j, 3);
j+=3;
}
System.out.println(Arrays.toString(result));
其中
str_array.split("\\s*:\\s*");
:\\s*:\\s*
表示零个或多个空格,然后是\\s*
个字符,然后是零个或多个空格
:
答案 1 :(得分:2)
使用此正则表达式\s*:\s*
String[] arraysplit = str_array.split("\\s*:\\s*");
详细信息:
\s*
零个或多个空格:
\s*
零个或多个空格