Groovy不从数组中删除元素

时间:2019-06-19 16:01:34

标签: groovy

我想从#数组中删除以//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 个答案:

答案 0 :(得分:1)

您可以使用readLines()从文件中读取各行,然后像这样调用findAll

String[] lines = new File("$_file")
    .readLines()
    .findAll { !it.startsWith('#') && !it.startsWith('//') }

答案 1 :(得分:0)

我做到了!

我将删除功能更改为:

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)

现在还可以!