1

我正在使用这段代码:

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()]);

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

4

5 回答 5

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()]);

试试行不行。。

于 2013-07-23T10:59:24.387 回答
1

你可以尝试这样的事情

 String[] str=new String[]{"","C","","","","D"};
   List<String> list=new ArrayList<>();
   for (String i:str){
       if(!i.equals("")){
           list.add("");
           list.add(i);
       }
   }
于 2013-07-23T11:02:28.447 回答
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()]);
于 2013-07-23T11:10:44.597 回答
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()]);
于 2013-07-23T11:31:03.763 回答
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("")){

我认为这会很好。

于 2013-07-23T11:43:47.490 回答