将字符串分解为字符串数组

时间:2014-02-27 09:17:27

标签: java

有源字符串

str = "one
 two
 three
 four
 five
 six
 seven
 eight
 nine" 

我想获得一个字符串数组

String[] mas; 
mas[0] = "one
 two
 three
 four" 

mas[1] =five 
six 
seven 
eight" 

mas[2] ="nine"

我想要一个不在我的行中的函数来做一个字符串数组。并且在数组的每一行中应该从原始字符串

获得4或6或N行

4 个答案:

答案 0 :(得分:5)

String.split()regex \\s+(或\n+一起使用,具体取决于您完全想要的内容)。

如果需要,您可以连接2个或更多字符串,但是在使用split()使用数组后 - 它应该相当容易,请尝试一下!

祝你好运。如果您在实施第二部分时遇到麻烦,请随时提出任何问题。


编辑:好像你在连接字符串时遇到了麻烦。这个shou; d用简单的迭代和StringBuilder

完成
    int SIZE = 4; 
    String[] arr = str.split("\\s+");
    List<String> res = new ArrayList<>();
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < arr.length; i++) {
        sb.append(arr[i]).append('\n');
        if (i % SIZE == SIZE-1) { 
            res.add(sb.toString());
            sb  = new StringBuilder();
        }
    }
    if (sb.length() != 0) res.add(sb.toString());
    System.out.println(res);
}

请注意,resList<String>,如果您希望将其作为数组,则可以始终使用toArray()方法。

答案 1 :(得分:1)

如果要拆分成每个数组元素一行的数组,那么String.split应该这样做;看@ amit的答案。

如果要拆分为每个数组元素有N行的数组(根据您的示例),没有标准的库类/方法来执行此操作。据我所知,任何常用的第三方库都没有方法可以做到这一点。

所以你能做的就是以下之一:

  • 拆分成单行数组......然后将数组粘合在一起,形成N组。
  • 反复拨打Matcher.find(...)以匹配/逐步换行换行符,每隔N次,您拨打String.substring(...)以提取一组换行符。

(它可能也可能产生一个粗糙的正则表达式,其中有一个复杂的正面后视,可以有效地计算N换行符。但是,这是(IMO)“讨厌的“......)

答案 2 :(得分:1)

@Test
public void test(){
    String str = "one\ntwo\nthree\nfour\nfive\nsix\nseven\neight\nnine";
    int number = 52;
    String[] strArr = getArray(str, 52);
}

String[] getArray(String str, int number){
    int nb = (int) Math.ceil(number / 20);
    String[] strSplit = str.split("\n");
    String[] strArr = new String[nb+1];
    int cursor = 0;
    for (int colNumberForFinalArray=0; colNumberForFinalArray<nb+1; colNumberForFinalArray++){
        strArr[colNumberForFinalArray] = "";
        int countElts = 20;
        if(colNumberForFinalArray == nb){
            countElts = number % 20;
        }
        for(int i = cursor; i< cursor+countElts ; i++){
            strArr[colNumberForFinalArray] += strSplit[i];
            if(i < cursor+countElts-1){
                strArr[colNumberForFinalArray] += "\n";
            }
        }
        cursor = cursor+countElts;
    }
    return strArr;
}

答案 3 :(得分:0)

调用此方法,您将获得Array

string
public String[] stringSplitter(String input){
     String[] splitStr = input.split("\\s+");
     return splitStr ;
 }

调用以下方法将结果组织为四个

 public ArrayList<String> stringGrouping(String[] input){
     int iter = 4;
     ArrayList<String> result = new ArrayList<String>();
     for(int i=0; i<input.length(); i++){
          String temp="";
          while(iter>0){
              temp.append(input.get(i));
          }
          result.add(temp);
          iter =4;
     }

说明

- 方法split采用regex输入来检测您要分割的字符,并返回Array分裂字。

- regex“\ s +”检测到一个或多个空格的出现。

我希望它有所帮助