Java 我想建立一个邮政编码处理程序,它将删除邮政编码中的任何非数字字符并打印格式化的邮政编码

Java 我想建立一个邮政编码处理程序,它将删除邮政编码中的任何非数字字符并打印格式化的邮政编码,java,regex,Java,Regex,要从输入的邮政编码中删除任何非数字字符,我已将正则表达式用于非数字=“\D”。但该程序无法处理zipcode中的空白。e、 g.无论何时输入“12 4-67_9”,它都将格式化的zipcode打印为“12”,而不是预期的“124679” import java.util.*; 导入java.util.regex.*; 公共类ZipCodeHandler{ 静态字符串拉链,zip5,zip4; 公共静态void main(字符串[]args){ 扫描仪s=新的扫描仪(System.in); Sys

要从输入的邮政编码中删除任何非数字字符,我已将正则表达式用于非数字=“\D”。但该程序无法处理zipcode中的空白。e、 g.无论何时输入“12 4-67_9”,它都将格式化的zipcode打印为“12”,而不是预期的“124679”

import java.util.*;
导入java.util.regex.*;
公共类ZipCodeHandler{
静态字符串拉链,zip5,zip4;
公共静态void main(字符串[]args){
扫描仪s=新的扫描仪(System.in);
System.out.println(“请输入邮政编码:”);
zip=s.next();
//非数字正则表达式
字符串regex=“\\D”;
字符串[]zip1=zip.split(regex);
StringBuilder=新的StringBuilder();
对于(int i=0;i而不是使用s.next(),请尝试s.nextLine()。检查和的差异

import java.util.*;
导入java.util.regex.*;
公共类ZipCodeHandler{
静态字符串拉链,zip5,zip4;
公共静态void main(字符串[]args){
扫描仪s=新的扫描仪(System.in);
System.out.println(“请输入邮政编码:”);
zip=s.nextLine();
//非数字正则表达式
字符串regex=“\\D”;
字符串[]zip1=zip.split(regex);
StringBuilder=新的StringBuilder();

对于(int i=0;i
Scanner
对象,有一个分隔符。从:

扫描器使用定界符模式将其输入拆分为标记,默认情况下,定界符模式匹配空白

调用
Scanner.next()
时,扫描器将一直读取,直到碰到此分隔符,然后停止读取。如果需要整行,请使用
Scanner.nextLine()

有一种更简单的方法可以从字符串中删除与特定模式匹配的所有内容。将正则表达式作为其参数之一。您可以在一行可读性较好的代码中替换所有非数字:

line = line.replaceAll("\\D","");
然后,您的程序变成:

public static void main(String[] args) {
    Scanner s = new Scanner(System.in);
    System.out.println("Please enter the zip code: ");  
    String line = s.nextLine();
    line = line.replaceAll("\\D","");
    System.out.println("The formatted zip code is: " + line);
}
Scanner.next()将在空格处停止。我想您的意思是“如果这有助于您理解问题以及如何解决问题,请标记为答案。”
line = line.replaceAll("\\D","");
public static void main(String[] args) {
    Scanner s = new Scanner(System.in);
    System.out.println("Please enter the zip code: ");  
    String line = s.nextLine();
    line = line.replaceAll("\\D","");
    System.out.println("The formatted zip code is: " + line);
}