У меня есть класс Parser, как показано в коде ниже:
import java.util.*;
public class Parser{
private static List<String> lines;
private String str;
private int num;
private boolean withlist;
boolean debug = false;
public Parser(List<String> lines){
this.lines = lines;
String str = "";
if (!this.lines.isEmpty()){
for (int i = 0; i < this.lines.size() - 1; i++){
str += this.lines.get(i) + "\n";
}
str += this.lines.get(this.lines.size()-1);
}
this.str = str;
this.withlist = true;
}
public Parser(String str){
this.str = str;
}
public static Parser parse(List<String> lines){
List<String> strings = new ArrayList<String>();
for (int i = 0; i < lines.size(); i++){
strings.add(String.valueOf(lines.get(i)));
}
return new Parser(strings);
}
public String toString(){
return this.str;
}
public Parser linecount(){
String[] words = this.str.split("\r\n");
if (words.length==1 && words[0].equals("")){
if (debug) System.out.println("Hi");
return new Parser("0");
}
else{
return new Parser(Integer.toString(words.length));
}
}
public Parser wordcount(){
String[] words = this.str.split("\\s+");
if (words.length==1 && words[0].equals("")){
return new Parser("0");
}
else{
return new Parser(Integer.toString(words.length));
}
}
public Parser echo(){
this.str = (this.str).replaceAll("\\r\\n|\\r|\\n", " ");
return new Parser(this.str);
}
}
Учитывая список: List lines = Arrays.asList(new String[]{"one", "two three"})
, я пытаюсь найти метод grab, который принимает строку str
и выводит соответствующие строки в списке lines
, который содержит конкретный str
. Вот что я попробовал до сих пор:
public Parser grab(String str){
int size = this.lines.size();
String newString = "";
for (int i = 0; i < size; i++){
if ((this.lines.get(i)).contains(str)==true){
newString += this.lines.get(i) +"\n";
}
else{
continue;
}
}
return new Parser(newString.trim());
}
Я должен получить следующий вывод при вызове Parser.parse(lines).grab("z").linecount().grab("0").linecount()
:
1
Однако вместо этого я получаю 0
. Я понял, что это потому, что когда я вызываю Parser.parse(lines).grab("z").linecount().grab("0")
, мой вывод - это пробел вместо 0
. Могу ли я узнать, как это исправить?