Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-将多个字符的字符串转换为一个数字字符串_Java_Arrays_String - Fatal编程技术网

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

Java-将多个字符的字符串转换为一个数字字符串,java,arrays,string,Java,Arrays,String,我有一个字符串坐标,看起来像这样:“(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(","); 如果不需要字

我有一个字符串坐标,看起来像这样:“(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]);
}
String数组=“(1,2)-(5,7)”;
String[]items=arr.replaceAll(“\\(“,”).replaceAll(“\\),”).replaceAll(“-”,”).split(“,”);
int[]newArray=newint[items.length];
对于(int i=0;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()));
}
}
import java.util.ArrayList;
导入java.util.array;
导入java.util.List;
导入java.util.regex.Matcher;
导入java.util.regex.Pattern;
公共最终类积分器{
公共静态void main(字符串[]args){
String test=“(13,26)-(1,16)”;//带值的行
Pattern p=Pattern.compile(“[0-9]{1,2}”);//创建一个正则表达式模式,搜索0到99之间的数值
匹配器m=p.匹配器(测试);
列表值=新的ArrayList();
while(m.find()){
values.add(Integer.parseInt(m.group());//将字符串匹配项转换为整数
}
System.out.println(“值为:”+Arrays.toString(Values.toArray()));
}
}
解决方案: 说明:
\\D++
-表示一个或多个非数字字符

s.replaceFirst(“\\D+”,“”)
-这是为了避免在被拆分的
数组的第一个索引处存储空字符串(如果在输入字符串的第一个索引处有一个“分隔符”,String.split()方法将字符串的开头作为存储在结果数组中的第一个元素。使用该replaceFirst()方法,则可以去掉输入字符串开头的所有非数字字符

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


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

您在尝试实现这一点时做了哪些工作??
String s = "(1,2)-(45,87)";
String[] splitted = s.replaceFirst("\\D+", "").split("\\D+"); // Outputs: [1, 2, 45, 87]