Java - 将多个字符的字符串转换为一串数字

时间:2018-03-05 19:32:25

标签: java arrays string

我有一个字符串坐标,如下所示:"(1,2) - (5,7)"

我如何将此字符串转换为数组:[1,2,5,7]?

我有两位数字的其他字符串,例如:"(13,26) - (1,16)"

这需要成为[13,26,1,16]

非常感谢任何帮助

4 个答案:

答案 0 :(得分:0)

//你的字符串

String x = "(13,26)-(5,7)";

//进入字符串数组

String arr[] = x.replace("(", "").replace(")", "").replace("-", ",").split(",");

如果你不想要字符串数组,那么你需要字符串:

x.replace("(", "").replace(")", "").replace("-", ",");

如果需要,你可以附加“[”和“]”。

答案 1 :(得分:0)

您可以尝试以下方式:

String array = "(1,2)-(5,7)";

String[] items = arr.replaceAll("\\(", "").replaceAll("\\)", "").replaceAll("-","").split(",");

int[] newArray = new int[items.length];

for (int i = 0; i < item.length; i++) {
    newArray[i] = Integer.parseInt(items[i]);
}

答案 2 :(得分:0)

如果您只需要一次匹配1到2位数,以下代码段将为您解析值:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public final class IntegerGetter {

public static void main(String[] args) {
    String test = "(13,26)-(1,16)"; // Line with the values

    Pattern p = Pattern.compile("[0-9]{1,2}");  // Create a regex pattern searching number values between 0 and 99
    Matcher m = p.matcher(test);
    List<Integer> values = new ArrayList<>();
    while(m.find()) {
        values.add(Integer.parseInt(m.group()));  // Convert the String matches to integers
    }

    System.out.println("Values are: " + Arrays.toString(values.toArray()));
}
}

答案 3 :(得分:0)

解决方案:

String s = "(1,2)-(45,87)";
String[] splitted = s.replaceFirst("\\D+", "").split("\\D+"); // Outputs: [1, 2, 45, 87]

说明:

\\D++ - 表示一个或多个非数字字符

s.replaceFirst("\\D+", "") - 这是为了避免在splitted数组的第一个索引处存储空String(如果在输入String的第一个索引处有一个“分隔符号”,String.split()方法)将String的开头视为存储在结果数组中的第一个元素。使用replaceFirst()方法,可以删除输入String最开头的所有非数字字符。

.split("\\D+") - 将上一个操作的结果拆分为一个或多个非数字字符。

注意:如果你只使用String[] splitted = s.split("\\D+");(没有replaceFirst()部分,输出将如下所示:[, 1, 2, 45, 87],你的意图不是什么。