我的文字类似300..—1234 5678 9012.—..0000-040.
我如何只提取数字123456789012
?
我想获得的数字只有数字+空格+数字+空格+数字。
这是我在获得1234 5678 9012
后尝试过的。希望您理解我的问题。提前谢谢
String text = item.getValue().trim();
char[] charArray = text.toCharArray();
String f1 = String.valueOf(charArray[4]);
String f2 = String.valueOf(charArray[9]);
if (item.getValue().length() == 14) {
if (f1.equals(" ") && f2.equals(" ")) {
String input = text.replace(" ", "");
if (input.matches("[0-9]+") && input.length() == 12) {
Log.i(TAG,input);
}
}
}
答案 0 :(得分:2)
对你:
String text="300..—1234 5678 9012.—..0000-040";
Pattern p = Pattern.compile("[0-9]+\\s[0-9]+\\s[0-9]+");
Matcher m=p.matcher(text);
if(m.find()) {
System.out.println(m.group(0).replaceAll(" ",""));
}
答案 1 :(得分:0)
对于给定的输入,下面应提取数字+空格+数字+空格+数字,但您需要通过针对所有可能的数据点进行测试来改进它。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Regex {
public static void main(String[] args) {
String data = "300..—1234 5678 9012.—..0000-040.";
Pattern pattern = Pattern.compile("[^0-9].([0-9 ]+)[^0-9].");
Matcher matcher = pattern.matcher(data);
if (matcher.find()) {
// use replace(" ", "") only if you want to remove spaces
// from the resultant string numbers+spaces+numbers+spaces+numbers
System.out.println(matcher.group(1).replace(" ", ""));
}
}
}