我正在尝试解析空格上的输入并将这些标记放入数组中。但是引用字符串作为一个单词。例如,假设输入为:
dsas r2r "this is a sentence" asd
和数组元素应该是:
array[0]="dsas"
array[1]="r2r"
array[2]="this is a sentence"
array[3]="asd"
为了解决这个问题,我使用了split方法,但它对我没有帮助
String input1=input.nextLine();
input1=input1.trim();
String delims="[ \"]+";
String[] array=input1.split(delims);
如何解决此问题?我必须把令牌放到一个数组中,我不得不使用arraylist。
答案 0 :(得分:0)
你可以试试这个。请注意,我快速写了这段代码,可能包含bug。我使用ArrayList来存储短语(因为时间紧张!)你可以轻松地使用数组(String [])。
String input1="dsas r2r \"this is a sentence\" asd";
input1=input1.trim();
char[] charArray = input1.toCharArray();
String word = "";
List<String> strList = new ArrayList<>();
boolean skipAll = false;
for(char tempChar : charArray) {
if( tempChar == '"') {
skipAll = !skipAll;
}
if( tempChar != ' ' && !skipAll) {
word += tempChar;
} else if( tempChar == ' ' && word.length() > 0 && !skipAll) {
strList.add(word);
word = "";
} else if(skipAll) {
word += tempChar;
}
}
if(word.length() > 0)
strList.add(word);
System.out.println(strList);