Java 2 ME不支持replaceAll(),自定义替换方法正则匹配失效求助
问题诊断
你自行实现的myReplaceAll方法仅支持固定字符串的全局替换,不具备正则表达式解析匹配能力。你传入的[^ A-Za-z0-9]是正则语法规则,你的代码会将它作为一整段普通字符串,去原文本中搜索完全匹配的子串,自然找不到对应内容,所以最终输出和原字符串没有差异,不属于代码逻辑错误,是实现的能力不支持正则匹配场景。
适配你的需求的解决方案
你当前的需求是过滤所有非英文字母、数字、空格的字符,不需要引入正则能力,直接遍历字符判断即可,更适配J2ME的受限运行环境,参考实现代码如下:
public static String filterInvalidChar(String str) { StringBuffer result = new StringBuffer(); for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9') || c == ' ') { result.append(c); } } return result.toString(); }
调用方式:
String pokus = "T+e+s+t č 1"; String test = filterInvalidChar(pokus); System.out.println(test); // 输出结果:T e s t 1
通用正则替换的说明
J2ME本身没有内置正则表达式API,如果你需要支持通用的正则替换功能,需要引入适配J2ME的轻量级第三方正则库,不建议在J2ME环境下自行实现完整正则解析逻辑,性能和兼容性都难以保障。
内容的提问来源于stack exchange,提问作者Deesak
相关产品推荐
相关产品推荐

