<project>
<target name = "test">
<property name = "src.dir" value = "src" />
<property name = "search4" value = ","/>
<fileset id = "existing" dir = "${src.dir}/src">
<patternset id = "files">
<include name = "*.txt"/>
</patternset>
</fileset>
<resourcecount property = "count">
<fileset id = "matches" dir = "../src">
<patternset refid = "files" />
<contains text = "${search4}" />
</fileset>
</resourcecount>
<echo message = "Found '${search4}' in files : '${count}'"/>
</target>
</project>
Я использовал это, но это печатает только первое вхождение. Я хочу напечатать общее количество.
Например, - abc, xyz, pg--> Количество вхождений запятые (,) равно 2.
Нет, я хотел бы посчитать количество запятых в конкретном файле внутри ../src.





Вот один способ. Копирует файл в другой файл с фильтром для удаления всех запятых, а затем получает размер вывода, который представляет собой количество запятых во входном файле.
<delete file = "out.txt" />
<copy file = "in.txt" tofile = "out.txt">
<filterchain>
<striplinebreaks />
<replaceregex pattern = "[^,]" replace = "" flags = "gm" />
</filterchain>
</copy>
<length file = "out.txt" property = "out.size" />
<echo message = "Commas found: ${out.size}" />
По вашему последующему вопросу: как ограничить это только первой строкой файла: добавьте это перед строкой "striplinebreaks":
<headfilter lines = "1" />
Это будет считать запятые только в первой строке файла.
Большое спасибо. Оно работает. Не могли бы вы прояснить это в одиночку? Например, в файле, если у меня есть такие: a, b, c / следующая строка / d, e / следующая строка / f, g, h ... и так далее. Можно ли посчитать количество запятых только в первой строке?
Смотрите мое обновление - довольно простое изменение. Если ответ работает для вас, отметьте его как принятый / проголосуйте, чтобы люди увидели, что на вопрос дан ответ!
Я не уверен, что понимаю, что вы здесь делаете. Похоже, вы подсчитываете общее количество запятых в именах всех файлов .txt, находящихся в
../src. Это верно?