TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
- 实例五:
- 美化数字
- 要求:在数字字符串的恰当位置添加逗号,方便用户阅读
- 第一个字符串:需要在1 2之间、4 5之间、7 8之间添加逗号。
- 第二个字符串:需要在3 4 之间添加
- 第三个字符串:不要添加任何。
- public static void main(String[] args) {
- String[] numbers = new String[]{"1234567890","123456","123"};
- for(String number:numbers){
- System.out.println("之前:"+number + "
- " + "美化:"+beautifyNumber(number) + "
- ");
- }
- }
- private static String beautifyNumber(String number) {
- return number.replaceAll(Regexes.NUMBER_BEAUTIFY_REGEX, ",");
- }
- }
- public class Regexes {
- public static final String NUMBER_BEAUTIFY_REGEX = "(?<=\d)(?=((\d{3})+\b))";
- }
- 运行结果:
- 之前:1234567890
- 美化:1,234,567,890
- 之前:123456
- 美化:123,456
- 之前:123
- 美化:123
- 4、正则表达式的主要思想
- 1)、正则表达式是一种描述字符串结构模式的形式化表达语言
- 2)、结构模式
- ・有结构的字符串,而不是字符流
- 3)、形式化
- ・用形式化的表达方法应付变化的情况
- 所谓结构化:
- String emailRegex = Regexes.USERNAME_REGEX + "@" + Regexes.HOSTNAME_REGEX;
- String email = "web163@163.com";
- 将感兴趣的用@构造出来。
- web163@163.com能与我们构造的结构化相匹配,这就是所谓的结构化。
- 所谓形式化的表达方式:
- 譬如:String regex1 = "\d+";
- 它匹配的是完全由10进制数值构成的字符串,不是匹配\d+的字符串。
- String DUP_WORD_REGEX = "(?<=\b)(\w+)\s+\1(?=\b)";
- ...
- String regex = Regexes.DUP_WORD_REGEX;
- return sentence.replaceAll(regex,"$1");
- ....
- $1是与正则表达式相关的概念
- 这个正则表达式能够智能处理识别字符串中重复的单词。
- 6、小结
- ・一门功能强大的文本处理语言
- ・灵活、高效、强大、便捷
- ・结构模式、形式化
-
-
复制代码 |
|