gpt4 book ai didi

基于模式的 Java 字符串格式化

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:06:12 25 4
gpt4 key购买 nike

有没有一种方法可以让我根据 regEx 模式格式化字符串。那就是我可以有一个字符串并应用该模式吗?一个完美的例子是电话号码或信用卡。例如,如果我有这个功能:

public String formatNumber(String input, String patter) {

// What to do...

}

我想在单个字符串中描述模式,而不是执行多个字符串操作以将输入转换为所需格式。

并不是说输入可能不是整个输入,而是输入的一部分,它仍然需要格式化。

EXAMPLE:
-------

Pattern = "\(\d{3}\) \d{3}-\d{4}"

123456 => (123) 456
1234567 => (123) 456-7
1234567890 => (123) 456-7890
12 => (12

最佳答案

好的,这个解决方案怎么样:

归功于 this post 中的@Code Jockey,您可以使用此正则表达式来匹配和格式化有效电话号码。

这个正则表达式有很多变体,它非常全面又灵活。请参阅示例链接。非常聪明。

正则表达式:

^\D*1?\D*([2-9])\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d).*$

替换:

($1$2$3) $4$5$6-$7$8$9$10

例子:

http://regex101.com/r/wM0nU5

然后如果匹配为假,(不是有效的电话号码),如您的示例所示:

123456
1234567
1234567890
12

您将使用另一个正则表达式来匹配和格式化无效项 - 例如:

(.{1,3})(.{1,3})(.{1,3})

替换:

($1) $2-$3

示例:

http://regex101.com/r/wY3kP2

个人说明:我不知道您为什么要匹配和格式化无效 电话号码。我个人会使用第一个正则表达式来格式化有效 数字,然后在错误匹配时,要求用户输入有效数字。但是,我确实理解,在不知道确切情况或应用程序的情况下,可能需要或异常(exception)以某种方式格式化无效的电话号码。

关于基于模式的 Java 字符串格式化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21200363/

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