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

2016 年 7 月 28 日
 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 不支持中文。

4882 次点击
所在节点    Java
24 条回复
v1024
2016 年 7 月 28 日
JS :
"**" + "胡汉三".split("").pop()
Zeahoo
2016 年 7 月 28 日
@v1024 不应该交给前端来做这件事吧,应该要后端来把名称给隐藏后再返回给前端,这样应该会好些。
BuilderQiu
2016 年 7 月 28 日
正则换成: ^.*(.)$
Zeahoo
2016 年 7 月 28 日
@BuilderQiu 成功了~感谢!
caixiexin
2016 年 7 月 28 日
public static void main(String[] args) {
String name = "张三";
String name2 = name.replaceAll("([\\u4e00-\\u9fa5])([\\u4e00-\\u9fa5])","**$2");
System.out.println(name2);
}
v1024
2016 年 7 月 28 日
@Zeahoo Node.js  啊。我就凑个热闹,没看见是java节点。
Bryan0Z
2016 年 7 月 28 日
为啥你写的这么烦
"**"+string.charAt(string.length());
一行不就好了
xcodebuild
2016 年 7 月 28 日
让前端隐藏是掩耳盗铃。。
icaca
2016 年 7 月 28 日
select 的时候直接处理好
hoperuin
2016 年 7 月 28 日
想不明白了,为什么要这么复杂呢?看下面 demo
public class Test {
public static void main(String[] args) {
String s = "哈哈张三我哈哈哈张三哦";
System.out.println(s.replaceAll("张三","**三"));
}
}

输出:
哈哈**三我哈哈哈**三哦
Bryan0Z
2016 年 7 月 28 日
@hoperuin 因为他是任意两个字的中文名?
dullwit
2016 年 7 月 28 日
看到 string 判断用 == null ,我心情就紧张起来了
21grams
2016 年 7 月 28 日
@hoperuin 我也是这么想的,不是很简单吗
Sunshow
2016 年 7 月 28 日
别浪,踏踏实实用 StringUtils
Cabana
2016 年 7 月 28 日
==null …你会吃亏的
Zeahoo
2016 年 7 月 28 日
@Cabana 刚实习……不懂,说一下原因。。。好怕啊你们说的
Zeahoo
2016 年 7 月 28 日
@dullwit 求教一下,说得我好怕
Zeahoo
2016 年 7 月 28 日
@Bryan0Z 因为要把它写在工具类里面,其他都是正则写的, &_& 小强迫症
bp0
2016 年 7 月 29 日
考虑复姓的情况了吗? 欧阳三,应该换成“**三”,而不是“**阳三”吧?
thinkmore
2016 年 7 月 29 日
占坑问问题!!

同问一个问题,我现在前台输入字符串,然后解析规则是:将逗号转义为\c ,然后将\转义成为\\,然后存入数据库。

此时如果我从数据库取出的数据是\\c ,如何将其转义为\,

如果前台输入的是\c 这种怎么办?

请问 java 或者 js 有什么好的方法吗?

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

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

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

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

© 2021 V2EX