我很难搞清楚。说我有像这样的字符串
字符串s可以等于
s =“{1,4,204,3}”
在另一个时间它可以等于
s =“& 5,3,5,20&”
或者它可以在另一个时间相等
s =“/ 4,2,41,23 /”
有没有办法可以从这个字符串中提取数字并制作一个char数组?
答案 0 :(得分:2)
您可以在此示例中使用正则表达式:
String s = "&5,3,5,20&";
System.out.println(s.replaceAll("[^0-9,]", ""));
<强>结果:强>
5,3,5,20
它将替换除数字和逗号之外的所有非单词。如果你想提取所有数字,你可以调用split方法 - &gt; String [] sArray = s.split(",");
并迭代到所有数组以提取逗号之间的所有数字。
答案 1 :(得分:2)
您可以使用RegEx并从字符串中提取所有数字。
stringWithOnlyNumbers = str.replaceAll("[^\\d,]+","");
在此之后你可以使用split()使用deliminator&#39;,&#39;获取数组中的数字。
答案 2 :(得分:0)
我认为使用replace()的split()必须帮助你
答案 3 :(得分:0)
从你的情况来看,如果字符串的模式在所有情况下都相同,那么下面的内容就可以了,检查是否有任何例外,这里没有提到:
String[] sArr= s.split(",");
sArr[0] = sArr[0].substring(1);
sArr[sArr.length()-1] =sArr[sArr.length()-1].substring(0,sArr[sArr.length()-1].length()-1);
然后将String []转换为char [],here是一个示例转换器方法
答案 4 :(得分:0)
使用正则表达式
String a = "asdf4sdf5323ki";
String regex = "([0-9]*)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(a);
while (matcher.find())
{
String group = matcher.group(1);
if (group.length() > 0)
{
System.out.println(group);
}
}
答案 5 :(得分:0)
您可以将Scanner
课程与,
分隔符
String s = "{1,4,204,3}";
Scanner in = new Scanner(s.substring(1, s.length() - 1)); // Will scan the 1,4,204,3 part
in.useDelimiter(",");
while(in.hasNextInt()){
int x = in.nextInt();
System.out.print(x + " ");
// do something with x
}
以上将打印:
1 4 204 3