JavaScript 正则表达式到 Java 正则表达式 - 替换和 Lambda

标签 java javascript regex replace

将此代码转换为 Java 的最佳方法是什么? (称为将字母数字电话号码转换为所有数字的部分) http://lawrence.ecorp.net/inet/samples/regexp-format.php

由于 Java 还没有 lambda...什么是 String.replace 的最佳方法?

最佳答案

哇,原始代码有点过于冗长了。我会这样做:

return phoneStr.replace(/[a-zA-Z]/g, function(m) {
    var ix= m[0].toLowerCase().charCodeAt(0)-0x61; // ASCII 'a'
    return '22233344455566677778889999'.charAt(ix);
});

因此在 Java 中,类似于:

StringBuffer b= new StringBuffer();
Matcher m= Pattern.compile("[A-Za-z]").matcher(phoneStr);
while (m.find()) {
    int ix= (int) (m.group(0).toLowerCase().charAt(0)-'a');
    m.appendReplacement(b, "22233344455566677778889999".substring(ix, ix+1));
}
m.appendTail(b);
return b.toString();

用 Java 的 Matcher 替换非常笨拙,您可能更喜欢在这种情况下使用数组:

char[] c= phoneStr.toLowerCase().toCharArray();
for (int i= 0; i<c.length; i++)
    if (c[i]>='a' && c[i]<='z')
        c[i]= "22233344455566677778889999".charAt((int) (c[i]-'a'));
return new String(c);

关于JavaScript 正则表达式到 Java 正则表达式 - 替换和 Lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3730210/

相关文章:

java - 将可序列化引入现有代码

java - 将许多记录写入 excel 文件会变得非常慢

java - 是否值得将日志框架包装在附加层中?

javascript - 正则表达式 : match a string separated by semicolons at start or between semicolons or at the end of the string

java - 正则表达式模式在字符串的每一行中查找整数

java - 如何在 Java FX 上可视化矩阵

javascript - 在选中的单选按钮和复选框按钮上触发动画

javascript - 使用 Chart.js 中数据表中的数组创建饼图

regex - Windows CMD FINDSTR 错误的正则表达式匹配

java - 电子邮件验证正则表达式 JAVA