在java中用逗号分隔字符串

时间:2014-09-25 22:27:01

标签: java

我有一个长度未知的字符串,看起来像这样

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]

5 个答案:

答案 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