Java正则表达式分隔,插入字符串
更新日期:2022-10-10
数字按千分位分割插入逗号
例如
12345 -> 12,345
1234567890 -> 1,234,567,890
给定一个整数字符串,从右往左,每3个数字加一个逗号
java代码中,我们使用方法 replaceAll
| private static void extractTextFrom(String reg, String txt) {
String res = txt.replaceAll(reg, ",");
System.out.printf(Locale.CHINA, "%-10s 使用正则 %s -> %s%n", txt, reg, res);
}
|
插入1个逗号
java中使用的正则表达式为 (?=\\d{3}$)
插入1个逗号,输出结果 |
---|
| 12 使用正则 (?=\d{3}$) -> 12
123 使用正则 (?=\d{3}$) -> ,123
1234 使用正则 (?=\d{3}$) -> 1,234
12345 使用正则 (?=\d{3}$) -> 12,345
123456 使用正则 (?=\d{3}$) -> 123,456
1234567890 使用正则 (?=\d{3}$) -> 1234567,890
|
插入多个逗号
java中使用的正则表达式为 (?=(\\d{3})+$)
相比之前的,每3个数字表达里,用小括号括起来了,后面多了个 +
号
插入多个逗号,输出结果 |
---|
| 12 使用正则 (?=\d{3}$) -> 12
123 使用正则 (?=\d{3}$) -> ,123
1234 使用正则 (?=\d{3}$) -> 1,234
12345 使用正则 (?=\d{3}$) -> 12,345
123456 使用正则 (?=\d{3}$) -> 123,456
1234567890 使用正则 (?=\d{3}$) -> 1234567,890
|
去掉开头的逗号
java中使用的正则表达式为 (?!^)(?=(\\d{3})+$)
结合(?!^)
,即从后往前每三个数字的位置前添加逗号,但是这个位置不能是^首位。
插入多个逗号,输出结果 |
---|
| 12 使用正则 (?!^)(?=(\d{3})+$) -> 12
123 使用正则 (?!^)(?=(\d{3})+$) -> 123
1234 使用正则 (?!^)(?=(\d{3})+$) -> 1,234
12345 使用正则 (?!^)(?=(\d{3})+$) -> 12,345
123456 使用正则 (?!^)(?=(\d{3})+$) -> 123,456
1234567890 使用正则 (?!^)(?=(\d{3})+$) -> 1,234,567,890
|
示例的完整测试代码如下
测试代码 |
---|
| import java.util.Locale;
public class RegReplace {
public static void main(String[] args) {
final String[] regs = {"(?=\\d{3}$)",
"(?=(\\d{3})+$)",
"(?!^)(?=(\\d{3})+$)"}; // (1)
final String[] strs = {"12", "123", "1234", "12345", "123456", "1234567890"};
System.out.println("正则表达式有 " + regs.length + "个;" + "待检测的字符串有 "
+ strs.length + "个");
for (String r : regs) {
for (String s : strs) {
extractTextFrom(r, s);
}
System.out.println();
}
}
private static void extractTextFrom(String reg, String txt) {
String res = txt.replaceAll(reg, ",");
System.out.printf(Locale.CHINA, "%-10s 使用正则 %s -> %s%n", txt, reg, res);
}
}
|
- 注意字符串里的转义符
代码截图
手机号变成3-4-4结构
针对国内的手机号。假设手机号 13800000000
,变成 138-0000-0000
参考上面的例子,从右往左,每4个数字,加一个分隔符
java代码中使用的正则 (?=(\\d{4})+$)
和上面一样,要注意转义符。
java代码中的转义符和输出结果的要区分
测试代码 |
---|
| import java.util.Locale;
public class RegPhoneNumber {
public static void main(String[] args) {
String reg = "(?=(\\d{4})+$)";
extractTextFrom(reg, "13812345678", ",");
extractTextFrom(reg, "18100000000", "-");
}
private static void extractTextFrom(String reg, String txt, String replaceText) {
String res = txt.replaceAll(reg, replaceText);
System.out.printf(Locale.CHINA, "%-10s 使用正则 %s -> %s%n", txt, reg, res);
}
}
|
输出结果
13812345678 使用正则 (?=(\d{4})+$) -> 138,1234,5678
18100000000 使用正则 (?=(\d{4})+$) -> 181-0000-0000
本站说明
一起在知识的海洋里呛水吧。广告内容与本站无关。如果喜欢本站内容,欢迎投喂作者,谢谢支持服务器。如有疑问和建议,欢迎在下方评论~
📖AndroidTutorial
📚AndroidTutorial
🙋反馈问题
🔥最近更新
🍪投喂作者
Ads