如何使用 String 类的 replaceAll 方法来使得「张三」替换为「**三」?

2016-07-28 12:20:53 +08:00
 Zeahoo

下面的方法能够解决问题

  /*
   * 若真实姓名为 张三
   * 则返回 **三
   */
  public static String realName(String realName){
    if(realName == null) return null;
    char[] charArray = realName.toCharArray();
    return "**" + charArray[charArray.length - 1];
  }

实现方式能不能用 replaceAll 的办法?

  public static String realName(String realName){
    if(realName == null) return null;
    return realName.replaceAll("(\\w+)(\\w)", "**$2");
  }

正则中 w 不支持中文。

3573 次点击
所在节点    Java
24 条回复
Zeahoo
2016-07-29 12:59:06 +08:00
@bp0 不管姓名有多长,只需要显示最后一个字就行了,考虑到了~
chocotan
2016-07-29 16:06:49 +08:00
[charArray.length - 1]
当传入的是""字符串的时候会抛异常
Bryan0Z
2016-07-29 23:38:11 +08:00
@dullwit
@Cabana
求问,正确方法是什么,以及为什么不能用==null
haniklz
2016-07-30 18:30:49 +08:00
难道不是替换人名中的姓?用正则表达式性能多低啊 直接 length 大于 1 时 返回 **+substring(1)不好么。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/295484

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX