我有一个长度未知的字符串,看起来像这样
a ,b, c: integer; d,e :real;
如何在逗号中拆分它而不获取变量最后一个逗号后面的单词和字符?或者有没有办法在变量分割后的数组中将变量分割为逗号?我最接近的是这种方法
// the variablesArray would contain a ,b, c in the first index
// and d,e in the second index.
public static String[] variables(String[]variablesArray) {
String variables[] = new String[variablesArray.length];
for(int i = 0; i < variablesArray.length; i++){
String temporary = variablesArray[i];
String arr[] = temporary.split(",");
}
return variables;
}
当我运行它时,它只返回数组索引中的第一个字符
//prints [a d]
答案 0 :(得分:1)
你需要解决问题:
;
。:
请注意,这将为您提供数组{"a ,b, c", "d,e"}
,因为我从您的问题中了解到您想要它。如果您想进一步拆分,则需要再次分割这些字符串 ,这次是,
。请注意,在这种情况下,您需要将数组的类型从String[]
更改为String[][]
。您将获得{{"a", "b", "c"}, {"d", "e"}}
。
如果您还想在拆分过程中去掉空格,请在拆分字符前后添加\s*
。例如:"a, b,c , d".split("\\s*,\\s*")
返回{"a", "b", "c", "d"}
。
答案 1 :(得分:1)
如果myString
等于"a ,b, c: integer; d,e :real;"
以下输出a b c d e
for (String type : myString.split(";")) {
String sub = type.substring(0, type.indexOf(":"));
for (String name : sub.split(",")) {
System.out.println(name);
}
}
答案 2 :(得分:0)
我认为你有问题。 temporary.split(",");
是一个数组,然后你将它作为另一个数组的一部分。这很麻烦....我的意思是:
Array
0 => Array
0 => a
1 => b
所以你应该使用:
String arr = temporary.split(",");
答案 3 :(得分:0)
如何关注?
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
String str = "a ,b,c: integer;d,e :real;";
String[] stra = str.split(";");
for(String st: stra){
//System.out.println(st);
String[] stra2 = st.split(",");
for(String s: stra2){
System.out.println(s);
list.add(String.valueOf(s.charAt(0)));
}
}
System.out.println(list);
}
<强> OP 强>
a
b
c: integer
d
e :real
[a, b, c, d, e]
答案 4 :(得分:0)
String[] result = s.replaceAll("\\w{2,}", "").replaceAll("[:;,]"," ").replaceAll("\\u0020+"," ").split(" ");
数组result
现在只包含单个字符。测试:
for(String c: array)
System.out.println(c);
将输出:
a
b
c
d
e