Cha*_*kya 13 java regex string
对于以下字符串:
String str="asd14sd67fgh007";
Run Code Online (Sandbox Code Playgroud)
我想输出像:
1467007asdsdfgh
Run Code Online (Sandbox Code Playgroud)
我知道如何分割字符串,但我不知道如何得到它.对于拆分,我有这个代码:
public static void main(String[] args) {
String str="asd14sd67fgh007";
Pattern pattern = Pattern.compile("\\w+([0-9]+)\\w+([0-9]+)");
Matcher matcher = pattern.matcher(str);
for(int i = 0 ; i < matcher.groupCount(); i++) {
matcher.find();
System.out.println(matcher.group());
}
}
Run Code Online (Sandbox Code Playgroud)
The*_*ind 29
2 replaceAll()
可以做到(如果你真的想使用正则表达式:P):
public static void main(String[] args) {
String s= "asd14sd67fgh007";
String correctedString = s.replaceAll("\\D+", "") + s.replaceAll("\\d+", "");
System.out.println(correctedString);
}
Run Code Online (Sandbox Code Playgroud)
O/P:
1467007asdsdfgh
Run Code Online (Sandbox Code Playgroud)
注意 :
"\\D+"
==>替换所有非数字字符""
.(会给你所有数字).
"\\d+"
==>替换所有数字""
(将为您提供所有非数字字符)
Men*_*ena 16
这是一个使用char[]
s和StringBuilder
s 的简单解决方案:
String input = "asd14sd67fgh007";
StringBuilder output = new StringBuilder();
// temporary, for storing alphabetic characters
StringBuilder temp = new StringBuilder();
// iterating input's characters one by one
for (char c: input.toCharArray()) {
// digits, go to output in their order
if (Character.isDigit(c)) {
output.append(c);
}
// letters, go to temporary to be appended later
else if (Character.isAlphabetic(c)){
temp.append(c);
}
// punctuation gets lost
}
// appending temporary alphabetics to digits and printing
System.out.println(output.append(temp));
Run Code Online (Sandbox Code Playgroud)
产量
1467007asdsdfgh
Run Code Online (Sandbox Code Playgroud)
你可以做这样的事情.用于StringBuilder
在循环遍历所有char
s 时跟踪正面和背面.
String str="asd14sd67fgh007";
StringBuilder front = new StringBuilder(str.length());
StringBuilder back = new StringBuilder(str.length());
for (char c : str.toCharArray()){
if (c>=48 && c<=57){ //If numeric
front.append(c);
}else{
back.append(c);
}
}
front.append(back.toString());
System.out.println(front.toString());
Run Code Online (Sandbox Code Playgroud)
产量
1467007asdsdfgh
Run Code Online (Sandbox Code Playgroud)