每次出现一个字母时,我都会将一个字符串拆分成一个数组,但是我现在想要将数组中的每个字符串拆分成更多数组,然后出现另一个字母,在每个拆分下面添加一个数字,并删除该字母。
这是我的代码:
private String input = "118u121u23n24"
private int y = 0;
private String[] split_main = new String[100];
private void split_u(){
String[] split = input.split("u");
for(int x=0; split.length>x; x++){
split_main[y] = split[x];
if(split.length>x+1)
split_main[y+1] = "+";
y +=2;
}
这会将我的字符串拆分成这样的数组 - 每次出现“u”时都会创建一个新数组并添加一个加号
118
+
121
+
23n24
我现在想要遍历每个数组并查找字母n并将其放在一个单独的行上,这将是新数组。但是每次我尝试这个都有错误,因为我似乎无法再在阵列上使用Split方法。如果不能使用拆分那么还有另一种方法吗?
118
+
121
+
23
n
24
提前感谢您的帮助。
答案 0 :(得分:2)
试试这个
String[] split = input.split("u|n");
u|n
表示用u
或n
分割字符串,只需将字符串拆分为两个分隔符
虽然您想在两个级别添加不同的分隔符,但您应该编写这样的代码。
String input = "118u121u23n24";
String[] s2;
ArrayList<String> main = new ArrayList<String>();
String[] split = input.split("u");
for(int x=0; split.length>x; x++){
s2 = split[x].split("n");
for(int k=0; k<s2.length; k++){
main.add(s2[k]);
if(s2.length>k+1)
main.add("n");
}
if(split.length>x+1)
main.add("+");
}
// print main array to test
for(int i=0;i<main.size();i++)
System.out.println(main.get(i));
答案 1 :(得分:1)
我建议您使用正则表达式立即拆分所有字母:
String[] split = input.split("(+|n)");
如果您需要中间步骤,那么唯一的方法是迭代第一个拆分,在第二个字母上构建拆分结果数组。如果要对多个拆分模式(不仅仅是“+”和“n”)执行此操作,则需要一个通用过程。这是示例代码:
/**
* Replaces one element of a list of strings with the results of
* splitting that element with a given pattern. A copy of the pattern
* is inserted between the elements of the split.
* @param list The list of elements to be modified
* @param pattern The pattern on which to split
* @param pos The position of the element to split
* @return The number of additional elements inserted. This is the amount by
* which the list grew. If the element was not split, zero is returned.
*/
int splitElements(List<String> list, String pattern, int pos) {
String[] split = list.get(pos).split(pattern);
if (split.length > 1) {
list.set(pos++, split[0]);
for (int i = 1; i < split.length; ++i) {
list.add(pos++, pattern);
list.add(pos++, split[i]);
}
} // else nothing to do
return (split.length << 1) - 1;
}
然后你会用你想要分割的每个角色来调用它:
private String input = "118u121u23n24";
private ArrayList<String> split_main = new ArrayList<String>();
split_main.add(input);
splitElements(split_main, "+", 0);
for (int i = 0; i < len; ++i) {
i += splitElements(split_main, "n", i);
}
答案 2 :(得分:0)
这是可能的。使用List
代替数组可以轻松插入新项目。
如果您只想要数组,请两次执行:首先,迭代input
并计算因n
而需要多少个单元格,然后创建适当大小的新数组并复制{ {1}}内容,沿途分裂。