有一个输入字符串:
String str="(1,6),(2,5),(7,10),(12,20)";
如何拆分字符串以便获得仅包含整数的整数数组?
即输出数组应为:arr={1,6,2,5,7,10,12,20};
答案 0 :(得分:5)
您可以使用这样的正则表达式:
public static void main(String args[]) {
String s = "(1,6),(2,5),(7,10),(12,20)";
Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher(s);
List<Integer> li = new ArrayList<Integer>();
while (m.find()) {
System.out.println(m.group());
li.add(Integer.parseInt(m.group()));
}
// convert li to array here if you want.
}
O / P:
1
6
2
5
7
10
12
20
答案 1 :(得分:2)
怎么样:
str.replaceAll("\\(|\\)","").split(",");
答案 2 :(得分:2)
简单地按\D+
分开。
你需要在字符串文字中转义反斜杠:.split("\\D+")
。
你将拥有空值,不要忘记处理它们;)
答案 3 :(得分:1)
方法是删除所有括号,然后用逗号分隔。
String str="(1,6),(2,5),(7,10),(12,20)";
//convert to string array of numbers
String[] numbersStr = str.replaceAll("\\(","").replaceAll("\\)","").split(",");
//convert to int array of numbers
int[] numbers = new int[numbersStr.length];
for(int i = 0; i < numbersStr.length; ++i)
numbers[i] = Integer.parseInt(numbersStr[i]);
请注意,如果您的字符串中只有括号和逗号,则此选项有效,否则您需要在split
之前用空字符串替换其他字符。
受this answer和this answer的启发。