在字符串数组中的每个填充单元格之前删除一个空白单元格

时间:2013-07-23 10:54:10

标签: java android string split substring

我正在使用此代码:

ArrayList<String> getques = db.getSolutionData(levelno, level);
    String str = getques.get(0);            
    stringarr = str.split("");
System.out.println(Arrays.toString(stringarr));

这是结果输出:

07-23 16:10:37.031: I/System.out(2548): [, C, , , D, , , F, , I, , , , A, , F, , A, , , , , , , , , , , B, , C, , D, , , H, , , , , , C, , I, , G, , , A, , , E, , , B, , I, , , , , F, , G, , , H, , , A, , , E, , D, , I, , , , , , F, , , I, , G, , E, , , , , , , , , , , D, , B, , A, , , , H, , B, , , G, , , F]

现在我想在每个填充的单元格之前删除一个空白单元格。 例如:在第二个单元格之前有一个我要删除的空白单元格,在,D,之前有2个空白单元格,所以我想在I一个空白单元格之前从那些单元格中删除一个A,3个空白单元格,所以我想删除其中一个,等等。 因此,我得出结论,我想在每个填充的细胞之前移除一个空白细胞。

我用过:

ArrayList<String> list = new ArrayList<String>();
    for (String s : stringarr)
        if (!s.equals(""))
            list.add(s);
    stringarr = list.toArray(new String[list.size()]);

但它删除了所有空白单元格。请提前帮助,谢谢

5 个答案:

答案 0 :(得分:1)

  List<String> list=new ArrayList<>();
   for (String i:str){
       if(!i.equals("")){
           list.add("");
           list.add(i);
       }
   }    

stringarr = list.toArray(new String[list.size()]);

尝试它是否有效..

答案 1 :(得分:1)

您可以尝试这样的事情

 String[] str=new String[]{"","C","","","","D"};
   List<String> list=new ArrayList<>();
   for (String i:str){
       if(!i.equals("")){
           list.add("");
           list.add(i);
       }
   }

答案 2 :(得分:1)

ArrayList<String> list = new ArrayList<String>();
boolean emptyCellRemoved = false;
for (String s : stringarr) {
    if ("".equals(s)) {
        if (emptyCellRemoved == false) {
            emptyCellRemoved = true;
        } else {
            list.add(s);
        }
    } else {
        emptyCellRemoved = false;
        list.add(s);
    }
}
stringarr = list.toArray(new String[list.size()]);

答案 3 :(得分:1)

试试这个:)

boolean oneRemoved = false;
ArrayList<String> list = new ArrayList<String>();
    for (String s : stringarr){

        if (s.equals("") && !oneRemoved){               
            oneRemoved = true;
        } else {
            list.add(s);
            if (!s.equals("")){
               oneRemoved = false;
            } 
        }

    }
    stringarr = list.toArray(new String[list.size()]);

答案 4 :(得分:1)

// original array
        List<String> list = Arrays.asList(stringarr);
        // modified array
        List<String> l = new ArrayList<String>();
//      insertion index
        int index = 0;
        for(int i =0 ; i< list.size() ;i++){
            if(!list.get(i).equals(" ") && !list.get(i).equals("")){
                index++;
                //remove extra empty space from end of modified array
                if(l.size() > 1){
                    l.remove(i - index);
                }
            }
            //make sure that first index not empty
            if(i - index == -1 ) {
                index--;
            }
            l.add(i - index, list.get(i));


        }
        System.out.println(Arrays.asList(list));
        System.out.println(Arrays.asList(l));

结果将是这样的:

[[ C,  ,  ,  D,  ,  ,  F,  ,  I,  ,  ,  ,  A,  ,  F,  ,  A,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  B,  ,  C,  ,  D,  ,  ,  H,  ,  ,  ,  ,  ,  C,  ,  I,  ,  G,  ,  ,  A,  ,  ,  E,  ,  ,  B,  ,  I,  ,  ,  ,  ,  F,  ,  G,  ,  ,  H,  ,  ,  A,  ,  ,  E,  ,  D,  ,  I,  ,  ,  ,  ,  ,  F,  ,  ,  I,  ,  G,  ,  E,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  D,  ,  B,  ,  A,  ,  ,  ,  H,  ,  B,  ,  ,  G,  ,  ,  F]]
[[ C,  ,  D,  ,  F,  I,  ,  ,  A,  F,  A,  ,  ,  ,  ,  ,  ,  ,  ,  ,  B,  C,  D,  ,  H,  ,  ,  ,  ,  C,  I,  G,  ,  A,  ,  E,  ,  B,  I,  ,  ,  ,  F,  G,  ,  H,  ,  A,  ,  E,  D,  I,  ,  ,  ,  ,  F,  ,  I,  G,  E,  ,  ,  ,  ,  ,  ,  ,  ,  ,  D,  B,  A,  ,  ,  H,  B,  ,  G,  ,  F]]

确保它是空白或空格单元格:

if(!list.get(i).equals(" ") && !list.get(i).equals("")){

我认为这样可以正常工作。