Ein alternativer Ansatz, und ich kann es nur vorschlagen, weil Sie nicht explizit sagen Sie Regex Matching verwenden müssen, ist auf "
aufzuspalten. Jedes andere Stück ist dein Interesse.
public static void main(String[] args) {
String[] testCases = new String[] {
" \"son of god\"\"cried out\" a good day and ok ",
"\"starts with a quote\" and then \"forgot the end quote",
};
for (String testCase : testCases) {
System.out.println("Input: " + testCase);
String[] pieces = testCase.split("\"");
System.out.println("Split into : " + pieces.length + " pieces");
for (int i = 0; i < pieces.length; i++) {
if (i%2 == 1) {
System.out.println(pieces[i]);
}
}
System.out.println();
}
}
Ergebnisse:
Input: "son of god""cried out" a good day and ok
Split into : 5 pieces
son of god
cried out
Input: "starts with a quote" and then "forgot the end quote
Split into : 4 pieces
starts with a quote
forgot the end quote
Wenn Sie sicherstellen wollen, dass es eine gerade Anzahl von doppelten Anführungszeichen ist sicher, dass das geteilte Ergebnis eine ungerade Zählung hat.
Wie gehst du mit der Saite um? Dann sagte John: "Ich habe mit Fred gesprochen und er sagte 'Ich mag es nicht'"? –
@JimGarrison es wird eine noch bessere Frage sein, wenn Sie ein Paar doppelte Anführungszeichen in diesem Paar von einfachen Anführungszeichen haben. – HuStmpHrrr