我不知道使用正则表达式是否可行。我只是想问一下有人知道答案。
我有string ="hellohowareyou??"
。我需要像这样拆分它
[h, el, loh, owar, eyou?, ?]
。
完成分割,使得第一个字符串的长度为1,第二个长度为2,依此类推。最后一个字符串将包含剩余的字符。我可以使用像这样的函数在没有正则表达式的情况下轻松完成。
public ArrayList<String> splitString(String s)
{
int cnt=0,i;
ArrayList<String> sList=new ArrayList<String>();
for(i=0;i+cnt<s.length();i=i+cnt)
{
cnt++;
sList.add(s.substring(i,i+cnt));
}
sList.add(s.substring(i,s.length()));
return sList;
}
我只是好奇是否可以使用正则表达式来完成这件事。
答案 0 :(得分:9)
答案 1 :(得分:5)
正则表达式的目的是识别模式。在这里,您不会搜索模式,而是搜索长度。 所以正则表达式不合适。
有可能,但不能使用单个正则表达式:使用正则表达式查找第一个 n 字符,您可以使用:“^(。{ n }) 。*“
因此,您可以使用该正则表达式搜索第一个字符。 然后,您创建一个子字符串,然后搜索下两个字符。 等
就像@splash所说的那样,它会使代码变得更加复杂和高效,因为你使用正则表达式来达到其目的之外的东西。
答案 2 :(得分:0)
String a = "hellohowareyou??";
int i = 1;
while(true) {
if(i >= a.length()) {
System.out.println(a);
break;
}
else {
String b = a.substring(i++);
String[] out = a.split(Pattern.quote(b) + "$");
System.out.println(out[0]);
a = b;
if(b.isEmpty())
break;
}
}