仅保留字符串中的有效字符
Posted
技术标签:
【中文标题】仅保留字符串中的有效字符【英文标题】:Keep only valid characters in a String 【发布时间】:2022-01-17 19:19:24 【问题描述】:有没有比我的解决方案更好的方法来从字符串中删除所有非法字符?也许是 lambda 表达式或正则表达式?在这种情况下,我只想保留 0 - 9、A - Z、a - z。
String iban = "DE07 1234 1234 1234 1234 12";
StringBuilder sb = new StringBuilder();
for (int i = 0; i < iban.length(); i++)
int val = iban.charAt(i);
if ( (val >= '0' && val <= '9') // 0 - 9
|| (val >= 'A' && val <= 'Z') // A - Z
|| (val >= 'a' && val <= 'z')) // a - z
sb.append(val);
iban = sb.toString();
【问题讨论】:
定义“更好”:性能更高?更简洁?更具可读性?更兼容? 也许我不需要遍历每个字符 这能回答你的问题吗? Replacing all non-alphanumeric characters with empty strings 【参考方案1】:它应该只留下字母 a-z、A-Z 和数字 0-9。 基本上使用正则表达式进行替换
iban = iban.replaceAll("[^a-zA-Z0-9]","");
【讨论】:
你可能应该添加一个赋值,因为仅仅调用replaceAll而不使用返回值将没有任何效果。 @VGR 是的,你是对的。我确实纠正了它【参考方案2】:是的:使用正则表达式:
String iban = "DE07 1234 1234 1234 1234 12";
iban = iban.replaceAll("[^0-9A-Za-z]", "");
【讨论】:
以上是关于仅保留字符串中的有效字符的主要内容,如果未能解决你的问题,请参考以下文章
使用 Access 2016 中的表创建查询时,仅保留长文本字段的前 255 个字符