我想要一些关于如何根据算术运算将字符串拆分为 N 个单独字符串的指导;例如 string.length()/300。
我知道使用诸如
之类的分隔符来做到这一点的方法testString.split(",");
但是如何通过 split
方法使用贪婪/不情愿/占有量词呢?
更新:根据要求提供一个类似的示例,说明我希望实现的目标;
String X = "32028783836295C75546F7272656E745C756E742E657865000032002E002E005C0"
结果为 X/3 (或多或少...手工完成)
X[0] = 32028783836295C75546F
X[1] = 6E745C756E742E6578650
x[2] = 65000032002E002E005C0
不用担心解释如何将它放入数组中,我对此没有问题,只是如何在不使用定界符的情况下进行拆分,而是算术运算
最佳答案
您可以通过在 (?<=\G.{5})
上拆分来做到这一点其中字符串 aaaaabbbbbccccceeeeefff
将分为以下几个部分:
aaaaa
bbbbb
ccccc
eeeee
fff
\G
匹配上一个匹配项发生的(零宽度)位置。最初,\G
从字符串的开头开始。请注意,默认情况下 .
meta char 不匹配换行符,因此如果您希望它匹配每个字符,请启用 DOT-ALL:(?s)(?<=\G.{5})
.
演示:
class Main {
public static void main(String[] args) {
int N = 5;
String text = "aaaaabbbbbccccceeeeefff";
String[] tokens = text.split("(?<=\\G.{" + N + "})");
for(String t : tokens) {
System.out.println(t);
}
}
}
可以在这里在线测试:http://ideone.com/q6dVB
编辑
由于您要求提供有关正则表达式的文档,这里是建议的正则表达式包含的主题的具体教程:
关于java - 将字符串 N 拆分为 N/X 个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4128547/