好的,这就是我在现实生活中所拥有的:
array = inputText.split("\n");
for (String each : array) {
listOfArray.add(each.split(" "));
}
说明:我在xhtml页面上有一个输入文本框。此框将包含几行。每一行都是:
Name1 Surname1 Age1 Sex1
Name2 Surname2 Age2 Sex2
Name3 Surname3 Age3 Sex3
然后我创建一个数组,其字段将包含每一行。 然后我想创建一个数组列表,其字段将包含第一个数组的每个字段。但我希望“Name1 Surname1”是一个奇异的领域。
答案 0 :(得分:3)
如果您正在为这个特殊情况寻找解决方案,而您不想在第一个空间拆分,那么您可以使用:
String line = "Name1 Surname1 Age1 Sex1";
String[] arr = line.split("(?<=\\s\\S{1,100})\\s");
System.out.println(Arrays.toString(arr));
输出:[Name1 Surname1, Age1, Sex1]
split("(?<=\\s\\S{1,100})\\s")
在空格上分割,空格和前面有1-100个非空白字符。因此,由于第一个空间之前没有任何空间,因此在分割过程中将跳过它
我还使用{1,100}
而不是+
,因为在Java中,后视需要有明显的最大长度,所以我们不能在那里使用+
(至少理论上是因为有bug允许它像:https://stackoverflow.com/a/16486373/1393766)。
答案 1 :(得分:1)
比@ creativecreator更常见的解决方案是:
String[] array = start.split(" ");
String[] finalArray = Arrays.copyOfRange(array, 1, array.length);
finalArray[0] = array[0] + " " + finalArray[0];
即。避免明确地完成所有任务。
答案 2 :(得分:0)
这很容易处理! :) 你只需要做一些自己的工作! 所以当你有这个字符串时:
String start = "Jon Snow 26 NightsWatch";
您现在可以将其拆分为第一个数组:
String[] array = start.split(" ");
现在你只需要创建一个新数组并将前两个值放到新数组上并插入一个空格,其余的就是后面的数组索引:
String[] finalArray = new String[3];
finalArray[0] = array[0] + " " + array[1];
finalArray[1] = array[2];
finalArray[2] = array[3];
我希望它对你有所帮助:)。
你可以实现@AndyTurner这样说的通用方法:
private static String[] splitAtSecondSpace(String string) {
String out[] = Arrays.copyOfRange(string.split(" "), 1, string.split(" ").length);
out[0] = string.split(" ")[0] + " " + out[0]; //adds on the missing string because copyOfRange started at 1 name and surname combined
return out;
}
你会像这样使用它:
String[] a = splitAtSecondSpace("Name Surname Age Sex");
for(String s : a) {
System.out.println(s);
}
输出将是:
姓名姓氏
年龄
性
答案 3 :(得分:0)
String str = "Jon Snow 26 NightsWatch"
String[] values = str.split(" ");
String[] finalValues = new String[3];
for(int j=0; j<values.length; j++)
if(j == 2)
{
index++;
finalValues[index] = values[j];
index++;
}
else
{
finalValues[index] += values[j] + " ";
}
P.S。 :这段代码是为了向OP展示如何继续。错误没有修复,留给读者修复。