gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 08:09:33 28 4
gpt4 key购买 nike

为了从输入的邮政编码中删除任何非数字字符,我对非数字 =“\D” 使用了正则表达式。但是该程序无法处理邮政编码中的空格。例如每当输入“12 4-67_9”时,它会将格式化的邮政编码打印为“12”而不是预期的“124679”。

import java.util.*;
import java.util.regex.*;
public class ZipCodeHandler {
static String zip,zip5,zip4;
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
System.out.println("Please enter the zip code: ");
zip=s.next();
//Regular expression for Non-digits
String regex="\\D";
String[] zip1=zip.split(regex);
StringBuilder builder = new StringBuilder();
for(int i=0;i<zip1.length;i++) {
builder.append(zip1[i]);
}
zip=builder.toString();
System.out.println("The formated zip code is: "+zip);
}
}

输出:请输入邮政编码:12 4-67_9格式化后的邮政编码为:12

最佳答案

Scanner 对象有一个分隔符。来自Javadoc for Scanner :

A Scanner breaks its input into tokens using a delimiter pattern, which by default matches whitespace.

当您调用 Scanner.next() 时,Scanner 会一直读取直到遇到此分隔符,然后停止读取。如果您想要整行,请改用 Scanner.nextLine()

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

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);
}

关于java - 我想构建一个邮政编码处理程序,它将删除邮政编码中的任何非数字字符并打印格式化的邮政编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32401866/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com