public static void main(String[] args) {
String brandmodel="VolkswagenGolf";
String [] splitedstring=new String[13]
//how to insert every 3 letters in splitedstring array
}
我想要的是每隔3个字母拆分上面的字符串。 例如 我想从上面的字符串中保存下一个 卷,KSW,年龄,非政府组织,LF 我在这里读了一些疯狂的代码,但我不理解它们,我想要最简单的方法。 我还没学过Regex
答案 0 :(得分:5)
计算您将拥有的零件数量并创建一个数组:
int parts = (string.length() + 2) / 3;
String splitted[] = new String[parts];
使用String.substring(int, int)
填充数组:
for (int i = 0; i < parts; ++i)
{
int x = i * 3;
splitted[i] = string.substring(x, Math.min(string.length(), x + 3));
}
Substring使用索引从另一个字符串中取出一个字符串。
问题是,如果你取出一个超出字符串的范围,将抛出异常。所以我所做的是使用Math.min(int, int)
将endIndex限制为字符串长度。它将始终返回两个传递值中最小的值。
这种错误的例子,没有Math.min():
String str = "test";
String substr = str.substring(2, 9);
此失败(例外)因为,9超出str
的范围。 str
只有4个字符。因此,有效的startIndices是:{0,1,2,3},在这种情况下有效的endIndices:{0,1,2,3,4}。
答案 1 :(得分:3)
你可以使用正则表达式后卫匹配最后一个匹配加上任意3个字符:
String[] splitString = brandmodel.split("(?<=\\G...)");
正则表达式(?<=\G...)
匹配一个空字符串,该字符串的最后一个匹配(\G)
后跟三个字符(...)
((?<= ))
输出:
[Vol, ksw, age, nGo, lf]
答案 2 :(得分:2)
不需要“疯狂代码”,这是一个相对简单的方法:
String[] res = new String[(s.length()+2)/3];
for (int i = 0 ; i != res.length ; i++) {
res[i] = s.substring(3*i, Math.min(3*i+3, s.length()));
}
关于ideone:link。
答案 3 :(得分:0)
适用于所有字符串
String brandmodel="VolkswagenGolf";
List <String> splitedstring = new ArrayList<String>();
int i = 0;
while(brandmodel.length() > 2 )
{
splitedstring.add(brandmodel.substring(0,3));
brandmodel = brandmodel.substring(3);
}
if(brandmodel.length() > 0)
splitedstring.add(brandmodel);