-1
public static void main(String[] args) {
    String brandmodel="VolkswagenGolf";
    String [] splitedstring=new String[13]
        //how to insert every 3 letters in splitedstring array

}

我想要的是将上面的字符串分成每 3 个字母。例如,我想从上面的字符串中保存下一个 Vol,ksw,age,nGo,如果我在这里阅读了一些疯狂的代码,但我不理解它们,我想要最简单的方法。我还没学过正则表达式

4

4 回答 4

5
  1. 计算您将拥有的零件数量并创建一个数组:

    int parts = (string.length() + 2) / 3;
    String splitted[] = new String[parts];
    
  2. 填充数组,使用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 使用索引从另一个字符串中取出一个字符串。问题是如果你取一个超出字符串的范围,就会抛出异常。所以我所做的是通过使用将 endIndex 限制为字符串长度Math.min(int, int)。它总是返回两个传递值中的最小值。

这个出错的例子,没有 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}。

于 2012-10-26T22:14:02.507 回答
3

您可以使用正则表达式后视匹配最后一个匹配加上任何 3 个字符:

String[] splitString = brandmodel.split("(?<=\\G...)");

正则表达式(?<=\G...)匹配一个空字符串,该字符串具有最后一个匹配项,(\G)后跟三个字符(...)((?<= ))

输出:

[Vol, ksw, age, nGo, lf]
于 2012-10-26T22:15:31.097 回答
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:链接

于 2012-10-26T22:14:54.623 回答
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);
于 2012-10-26T22:24:36.877 回答