我有一个字符串坐标,看起来像这样:“(1,2) - (5,7)”
我如何将此字符串转换为数组:[1,2,5,7]?
我有两位数字的其他字符串,例如:“(13,26) - (1,16)”
这需要成为[13,26,1,16]
任何帮助将不胜感激
//你的字符串
String x = "(13,26)-(5,7)";
//进入字符串数组
String arr[] = x.replace("(", "").replace(")", "").replace("-", ",").split(",");
如果你不想要字符串数组,那么你想要字符串:
x.replace("(", "").replace(")", "").replace("-", ",");
如果需要,你可以附加“[”和“]”。
您可以尝试以下方式:
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]);
}
如果您只需要一次匹配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()));
}
}
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]
,你的意图不是什么。