Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用逗号和“将字符串拆分为整数列表”-&引用;_Java_String_Parsing - Fatal编程技术网

Java 使用逗号和“将字符串拆分为整数列表”-&引用;

Java 使用逗号和“将字符串拆分为整数列表”-&引用;,java,string,parsing,Java,String,Parsing,有没有一种简单的方法可以将以下字符串解析为整数列表: String s = "1,2,5-9,11,12" // expected values list: [1,2,5,6,7,8,9,11,12] List<Integer> values = magicallyGetListFromString(s); String s=“1,2,5-9,11,12” //期望值列表:[1,2,5,6,7,8,9,11,12] 列表值=magicallyGetListFromString;

有没有一种简单的方法可以将以下字符串解析为整数列表:

String s = "1,2,5-9,11,12"

// expected values list: [1,2,5,6,7,8,9,11,12]
List<Integer> values = magicallyGetListFromString(s);
String s=“1,2,5-9,11,12”
//期望值列表:[1,2,5,6,7,8,9,11,12]
列表值=magicallyGetListFromString;
我想知道是否有一种简单的方法来完成它,而不是自己编写。

publicstaticvoidmain(String[]args){
public static void main(String[] args) {
    String str = "1,2,5-9,11,12,19-21";
    String[] val = str.split(",");
    List<Integer> l = new ArrayList<Integer>();
    for (String s : val) {

        if (s.contains("-")) {
            String[] strVal = s.split("-");
            int startVal = Integer.parseInt(strVal[0]);
            int endVal = Integer.parseInt(strVal[1]);
            for (int i = startVal; i <= endVal; i++) {
                l.add(i);
            }
        } else {
            l.add(Integer.parseInt(s));
        }
    }
    for (int j : l) {
        System.out.println(j);
    }
}
字符串str=“1,2,5-9,11,12,19-21”; 字符串[]val=str.split(“,”); 列表l=新的ArrayList(); for(字符串s:val){ 如果(s)包含(“-”){ 字符串[]strVal=s.split(“”); int startVal=Integer.parseInt(strVal[0]); int endVal=Integer.parseInt(strVal[1]); 对于(int i=startVal;i
List out=new ArrayList();
字符串编号[]=s.split(“,”);
用于(字符串部分:数字){
如果(部分包含(“-”){
int a=Integer.parseInt(part.split(“-”[0]);
intb=Integer.parseInt(part.split(“-”[1]);
而(a这应该有效:

public class StringMagic
{
    public static void main(String[] args)
    {
        String s = "1,2,5-9,11,12";

        // expected values list: [1,2,5,6,7,8,9,11,12]
        List<Integer> values = magicallyGetListFromString(s);
        for (Integer integer : values)
        {
            System.out.println(integer);
        }
    }

    public static List<Integer> magicallyGetListFromString(String s)
    {
        List<Integer> numberList = new ArrayList<Integer>(); 
        String[] numbers = s.split(",");
        for (String string : numbers)
        {
            if (!string.contains("-"))
            {
                numberList.add(Integer.parseInt(string));
            }
            else
            {
                String[] limits = string.split("-");
                int bottomLimit = Integer.parseInt(limits[0]);
                int upperLimit = Integer.parseInt(limits[1]);
                for(int i = bottomLimit; i <= upperLimit; i++)
                {
                    numberList.add(i);
                }
            }
        }
        return numberList;
    }
}
公共类StringMagic
{
公共静态void main(字符串[]args)
{
字符串s=“1,2,5-9,11,12”;
//期望值列表:[1,2,5,6,7,8,9,11,12]
列表值=magicallyGetListFromString;
用于(整数:值)
{
System.out.println(整数);
}
}
公共静态列表magicallyGetListFromString(字符串s)
{
List numberList=new ArrayList();
字符串[]数字=s.split(“,”);
for(字符串:数字)
{
如果(!string.contains(“-”)
{
add(Integer.parseInt(string));
}
其他的
{
String[]limits=String.split(“-”);
int bottomLimit=Integer.parseInt(限制[0]);
int upperLimit=Integer.parseInt(限制[1]);

对于(inti=bottomLimit;i您所看到的魔术

public static List<Integer> magicallyGetListFromString(String s){
   String[] str=s.split(",");
   List<Integer> result=new ArrayList<Integer>();
   for(String i:str){
       if(i.contains("-")){
           String[] ss=i.split("-");
           int lower= Integer.parseInt(ss[0]);
           int upper= Integer.parseInt(ss[1]);
           for(int j=lower;j<=upper;j++){
               result.add(j);
           }
       }else {
           result.add(Integer.parseInt(i));
       }
   }
    return result;
}

我的猜测是,它会保留,s和-s,但不会保留实际的数字。
StringTokenizer
太复杂了?是的,编写一些Java代码来解析它。你的具体问题是什么。看这里,我知道如何自己做(非常类似于@SteveL-answer)。我正在寻找一个现有的代码来完成它…@mxb:
StringTokenizer
是一个遗留类,不建议在新代码中使用它。
public static List<Integer> magicallyGetListFromString(String s){
   String[] str=s.split(",");
   List<Integer> result=new ArrayList<Integer>();
   for(String i:str){
       if(i.contains("-")){
           String[] ss=i.split("-");
           int lower= Integer.parseInt(ss[0]);
           int upper= Integer.parseInt(ss[1]);
           for(int j=lower;j<=upper;j++){
               result.add(j);
           }
       }else {
           result.add(Integer.parseInt(i));
       }
   }
    return result;
}
[1, 2, 5, 6, 7, 8, 9, 11, 12]