从字符串转换和提取整数

时间:2015-03-22 23:28:59

标签: java regex

我正在尝试做这样的事情:

输入:类似字符串(数字是随机的):

"<12, 3>, <4, 5>, <23, 5>, <33, 56>" 

输出:像这样的整数数组

[12, 3, 4, 5, 23, 5, 33, 56]

我尝试使用一些语法和一些分裂,但我总是以字符串或字符结束。

2 个答案:

答案 0 :(得分:0)

这应该做你想做的事:

package split;

public class Main {

    public static void main(String[] args){

        String mString = "<12,3>,<4,5>,<23,5>,<33,56>"; 
        mString = mString.replace("<", ""); 
        mString = mString.replace(">", ""); 
        String[] stringArray = mString.split(","); 

        int[] intArray = new int[stringArray.length];
        int index = 0; 
        for(String mS : stringArray){
            intArray[index] = Integer.parseInt(mS); 
            index++;
        }

        for(int i : intArray){
            System.out.println(i); 
        }
    }
}

要将String更改为int,请使用Integer.parseIn("your String");

答案 1 :(得分:0)

有时使用正则表达式的技巧不是试图匹配您要解析的事物的完整格式,而只是为了找到您要查找的内容。

在您的情况下,由于您想要展平数字列表,您需要查找的是一系列数字。所以这很容易做到。

List<Integer> findNumbers(String s) {
    List<Integer> result = new ArrayList<Integer>();
    Pattern pattern = Pattern.compile("\\d+");
    Matcher matcher = pattern.matcher(s);
    while (matcher.find()) {
        result.add(Integer.parseInt(matcher.group()));
    }
    return result;
}