首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将字符串拆分为带有逗号和"-“的整数列表

将字符串拆分为带有逗号和"-“的整数列表
EN

Stack Overflow用户
提问于 2014-07-08 11:30:51
回答 4查看 635关注 0票数 0

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

代码语言:javascript
运行
复制
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);

我想知道是否有一个简单的方法来做,而不是自己写。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-07-08 11:39:58

代码语言:javascript
运行
复制
List<Integer> out=new ArrayList<Integer>();
String numbers[]=s.split(",");
for(String part:numbers){
    if(part.contains("-"){
        int a=Integer.parseInt(part.split("-")[0]);
        int b=Integer.parseInt(part.split("-")[1]);
        while(a<=b){
             out.add(a++);
        }
    }else{
        out.add(Integer.parseInt(part));
    }
}
票数 3
EN

Stack Overflow用户

发布于 2014-07-08 11:32:38

代码语言:javascript
运行
复制
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);
    }
}

文书主任:1 2 5 6 7 8 9 11 12 19 20 21

票数 2
EN

Stack Overflow用户

发布于 2014-07-08 11:43:12

这应该是可行的:

代码语言:javascript
运行
复制
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;
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24630698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档