我开始使用android studio和app开发!我有一个java代码可以在我的Windows 8.1 PC上正常工作但是当我将代码复制到我的应用程序时,某个部分无法正常工作......我将向您解释:
我正在使用split命令将String拆分为2个字符。我使用的正则表达式如下:
Text.split("(?<=\\G..)");
在电脑上它完美无缺!例如:
字符串:cef9c2....
- &GT; "ce" + "f9" + "c2" + ".." + ".."
但Android上的调试显示了相同的代码对String的作用:
字符串:cef9c2....
- &GT; "ce" + "f9c2...."
有人可以帮帮我吗?那会很好:)非常感谢
答案 0 :(得分:1)
Android Regex实现与java&#34;标准&#34;不同。这可能是你问题的原因。
Android中使用的正则表达式实现由ICU提供。正则表达式的表示法主要是其他Java语言实现中使用的表示法的超集。这意味着现有应用程序通常会按预期工作,但在极少数情况下,Android可能会接受其他实现不接受的正则表达式。在某些情况下,Android会认识到正则表达式是一个可以更有效地处理的简单特殊情况。对于String中的便捷方法和Pattern中的方法都是如此。
来源:http://developer.android.com/reference/java/util/regex/Pattern.html
我建议你根据上面链接中给出的解释重新考虑你的正则表达式。
答案 1 :(得分:0)
您可以轻松定义一个自己执行此操作的函数,因此确保它也适用于android。
public String[] splitInSubstrings (String str, int len) {
int siz = (int)Math.ceil((double)str.length() / (double) len);
String[] res = new String[siz];
int idx = 0;
for(int i = 0; i < res.length; i++) {
int end_idx = ((idx + len) >= str.length()) ? str.length() : (idx + len);
res[i] = str.substring(idx, end_idx);
idx += len;
}
return res;
}