A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 梦缠绕的时候 黑马粉丝团   /  2018-12-14 11:08  /  436 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

实例五:
美化数字
要求:在数字字符串的恰当位置添加逗号,方便用户阅读
第一个字符串:需要在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 + "\n" + "美化:"+beautifyNumber(number) + "\n");
    }
  }
  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、小结
·一门功能强大的文本处理语言
·灵活、高效、强大、便捷
·结构模式、形式化

1 个回复

倒序浏览
奈斯
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马