Java拆分字符串以获取值

时间:2015-01-15 21:22:41

标签: java string split

我正在尝试拆分字符串以获取集合中的值,例如我有这个字符串:

215018,738,25094548 47137,77,1479107 80595,70,740157 38834,90,5419316 59382,82,2431554 865303,1,4 158088,44,56662 139671,61,325746 530224,5,410 783,99,14400482 268478,20,4981 577948,1,30 684122,1,40 222912,37,27987 598052,1,18 614235,1,40 69690,48,85643 235186,32,17801 329817,14,2179 118561,50,102391 380170,1,0 376338,1,0 374930,1,0 335953,1,0 -1,-1 -1,-1 -1,-1

我需要用空格分割这个字符串,以便我最终得到这个:

215018,738,25094548

接下来,我用逗号分隔并插入一个类的arraylist:

ArrayList<SomeClass> someClass = new SomeClass<SomeClass>();
someClass.add(new SomeClass("215018", "738", "25094548"));

我需要为第一个字符串中的每个值执行此操作。 我也需要能够忽略字符串末尾的'-1'。

我无法理解执行此任务背后的逻辑和代码。

感谢任何帮助:)

2 个答案:

答案 0 :(得分:1)

以下是一些干运行代码:

public class Split
{
    public static void main (String[] args) {
      String SPACE_K = " ";
      String SEPARATOR_K = ",";

      String input = "15018,738,25094548 47137,77,1479107 80595,70,740157 38834,90,5419316 59382,82,2431554 865303,1,4 158088,44,56662 139671,61,325746 530224,5,410 783,99,14400482 268478,20,4981 577948,1,30 684122,1,40 222912,37,27987 598052,1,18 614235,1,40 69690,48,85643 235186,32,17801 329817,14,2179 118561,50,102391 380170,1,0 376338,1,0 374930,1,0 335953,1,0";
      String[] numbers = input.split(SPACE_K);
      for (int i=0; i<numbers.length; i++) {
        String number = numbers[i];
        String[] values = number.split("\\"+SEPARATOR_K );
        if (values!=null && values.length==3) {
            Skill skill = new Skill(values[0], values[1], values[2]);
            System.out.println("\nCreated new object "+ skill.toString());
        }
      }
    }

    public static class Skill {
        private final String val1, val2, val3;

        public Skill(String in1, String in2, String in3)  {
          val1 = in1; val2 = in2; val3 = in3;
        }

        public String toString() {
          return "Skill ("+ val1 + ", " + val2 + ", " + val3 + ")";
        }        
    }
}

答案 1 :(得分:0)

这里有一些伪代码:

使用&#34;将其分成几个部分。 &#34;具有此功能的字符public String[] split(String regex),如此

String[] splitBySpace = yourString.split(" "); 

这允许您使用空格分割成数组。 X持有一串字符串&#34; x,y,z,a,b,c(等)&#34;。然后,再次调用相同的函数。

String[] splitbyComma = splitBySpace[i].split(",");  // this will split using the commas, run it in a for loop and save it somewhere

现在y保持数组填充单个值。添加到数组,或arraylist或最后选择使用的任何列表。

关于字符串末尾的&#34; -1&#34; s;只是不要使用x数组的最后3个索引(因为将会有3个副本&#34; -1,-1和#34;最后在x内部。

要添加到数组列表(假设list是您的ArrayList):

for (int i = 0; i < /* your end condition */; i++) {
    String[] splitByComma = splitBySpace[i].split(",");
    list.add(new someObj(splitByComma[0], splitByComma[1], splitByComma[2]));
}