为了账号安全,请及时绑定邮箱和手机立即绑定

如何清理和打印 \d{3} \d{3} \d{2} \d{2} 格式的数字

如何清理和打印 \d{3} \d{3} \d{2} \d{2} 格式的数字

慕容森 2022-09-28 15:29:07
使用正则表达式,我需要格式化一个字符串,其中包含数字,字母a-z和A-Z,同时还包含破折号和空格。从用户输入我有02-219 8 53 24输出应为022 198 53 24我正在使用正则表达式[^A-Za-z0-9\\s.]和爪哇String abc = "02-219 8 53 24"; String hello = abc.replaceAll("[^A-Za-z0-9\\s.]", " "); System.out.println(hello.replaceAll("(\\S\\d{3})", ""));导致02 219 8 53 24
查看完整描述

2 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

您可以使用

.replaceAll("\\D+", "").replaceFirst("^(\\d{3})(\\d{3})(\\d{2})(\\d{2})$", "$1 $2 $3 $4")

该部分删除所有非数字字符(因此,有问题的字符串变为 ),第二部分将数字拆分为组并在它们之间插入空格。请参阅此步骤 2 的正则表达式演示.replaceAll("\\D+", "")0221985324replaceFirst("^(\\d{3})(\\d{3})(\\d{2})(\\d{2})$", "$1 $2 $3 $4")

爪哇演示

String abc = "02-219 8 53 24";

String hello = abc.replaceAll("\\D+", "");

System.out.println(hello.replaceFirst("^(\\d{3})(\\d{3})(\\d{2})(\\d{2})$", "$1 $2 $3 $4"));

// => 022 198 53 24


查看完整回答
反对 回复 2022-09-28
?
心有法竹

TA贡献1866条经验 获得超5个赞

您可以使用正则表达式通过删除非数字字符,但不需要它来格式化输出字符串。为此,您可以直接使用字符串格式()方法或 printf()\D


String input = "02-219 8 53 24";

Object[] charObjectArray = 

    input.replaceAll("\\D", "").chars().mapToObj(c -> (char)c).toArray(Character[]::new);

if(charObjectArray.length>=10)

    System.out.printf("%c%c%c %c%c%c %c%c %c%c%n", charObjectArray);

else

    System.out.println("Invalid input string");

输出:


022 198 53 24


查看完整回答
反对 回复 2022-09-28
  • 2 回答
  • 0 关注
  • 218 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号