Groovy не удаляет elemnts из массива - PullRequest
0 голосов
/ 19 июня 2019

Я хочу удалить строки, начинающиеся с # или // из массива lines. Это не работает.

Вот код (исключая предварительные данные, такие как чтение файла и т. Д.):

       def file =  new File("$_file").text.replaceAll("\\r\\n|\\r|\\n", " ");


          String[] lines_ = file.split("\\s*;\\s*");

          println(lines_);

        for(line in lines_)
        {

          if(line.take(1) =='#' || line.take(2) == '//')
          {

            remove(lines_ , line);
          }             

         }

Вот функция remove

public static String[] remove(String[] input, String deleteMe) 
{
    if (input != null) {
        List<String> list = new ArrayList<String>(Arrays.asList(input));
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).equals(deleteMe)) {
                list.remove(i);
            }
        }
        return list.toArray(new String[0]);
    } else {
        return new String[0];
    }
}

Вот это $_file

canvas cvs {

  width:100,
  dfdf:60
}
;
//this is a comment;
#also a comment;
sprite  ball{


   body : hr,
   Image: here
}
;

Спасибо.

Ответы [ 2 ]

1 голос
/ 19 июня 2019

Вы можете прочитать строки из файла с помощью readLines(), а затем просто набрать findAll, например, так:

String[] lines = new File("$_file")
    .readLines()
    .findAll { !it.startsWith('#') && !it.startsWith('//') }
0 голосов
/ 19 июня 2019

Я сделал это!

Я изменил функцию удаления на:

static String[] remove(String[] str_array , String what){


    List<String> list = new ArrayList<String>(Arrays.asList(str_array));
    list.remove(what);
    str_array = list.toArray(new String[0]);

    return str_array;
}

и remove(lines_,line) на lines_ = remove(lines,line)

И теперь все нормально!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...