核心问题:解决遇到引号字符串时内部空格保存的问题“** *”
思路:tagLeft作为引号标记,在无引号字符串的时候,tagLeft为false,此时直接逐个保存字符即可,遇到空格时,保存为换行符。遇到引号时,tagLeft为true,此时保存步骤不忽略空格,一律全部保存直到遇到又引号”,tagLeft重新标记为false。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
String str = sc.nextLine();
StringBuffer sb = new StringBuffer();
int count = 1;
boolean tagLeft = false;
for (int i=0; i<str.length(); i++){
if (str.charAt(i) == '"' && !tagLeft){
tagLeft = true;
continue;
}
if (str.charAt(i) == '"' && tagLeft){
tagLeft = false;
continue;
}
if (tagLeft){
sb.append(str.charAt(i));
continue;
}
else{
if (str.charAt(i)==' '){
sb.append("\n");
count++;
continue;
}
sb.append(str.charAt(i));
}
}
System.out.println(count);
System.out.println(sb);
}
}
}
京公网安备 11010502036488号