Quindi ho la seguente stringa:
deptid = 33 AND location = "NewYork"
fondamentalmente sto cercando di analizzarlo in token. Ho appena usato Split.string e separato dallo spazio e questo avrebbe funzionato per tutto ciò di cui ho bisogno, tuttavia ci sono casi in cui la stringa potrebbe essere:
deptid = 33 AND location = "New York"
Ho bisogno di tenere tutto tra le virgolettecosì com'è. C'è un modo in cui posso usare String.split per dividerlo in modo tale da suddividere tutto per spazio tranne quando incontra una citazione che mi darà il segno di tutto tra le virgolette?
MODIFICARE: Scusa per non aver chiarito prima! Ma voglio ogni singola cosa in quella frase. Voglio deptid, =, 33, AND, location, =, New York. L'istruzione AND non sarà sempre lì. Potrebbe essere solo
location = "New York"
risposte:
2 per risposta № 1Hai bisogno di qualcosa di più potente di String.split, usa Patterns:
String myString = "deptid = 33 AND location = "New York"";
List<String> tokens = new LinkedList<>();
Pattern tokenPattern = Pattern.compile(""[^"]*"|[^ ]+");
Matcher matcher = tokenPattern.matcher(myString);
while(matcher.find()) {
tokens.add(matcher.group());
}
System.out.println(tokens);
3 per risposta № 2
Il tuo commento:
Sto cercando di memorizzarlo nei token String []. Quindi mi aspetto che i token [0] siano 33 e i token [1] siano "New York".
Prova questo
String s = "deptid = 33 AND location = "New York"";
int index = 0;
String[] arr = s.split("AND");
String[] tokens = new String[arr.length];
for (String str : arr) {
tokens[index++] = str.split("=")[1].trim();
}
for (String token : tokens) {
System.out.println(token);
}
Produzione:
33
"New York"