Usando lo scanner in java come posso hasnext (astring) dove la stringa non è il modello di regex?

StackOverflow https://stackoverflow.com/questions/1506249

  •  19-09-2019
  •  | 
  •  

Domanda

Sto cercando di fare come afferma la mia domanda, quindi ho il seguente codice che troverebbe la partita.

String test = scan.next();
if (test.equals("$let"))
return 1;

Tuttavia, preferirei usare Hasnext per non consumare un token; Tuttavia, quando lo faccio non fallisce.
if (scan.hasNext("$let"))
return 1;

Mi rendo conto che When Done ha la prossima variabile si aspetta uno schema, ma ho pensato che se non ho simboli di regex dovrebbe funzionare. Ho anche pensato che $ fosse forse un simbolo regex, quindi ho provato /$ comunque, che non ha funzionato!

Grazie per l'aiuto!

È stato utile?

Soluzione

Dovresti usare $ per sfuggire al regex, ma è più facile ottenere il prossimo () e salvare il risultato.

Altri suggerimenti

In generale, se hai una stringa arbitraria che si desidera abbinare letteralmente senza significati a qualsiasi metacharacters regex, puoi usare java.util.Pattern.quote.

Scanner sc = new Scanner("$)}**");
System.out.println(sc.hasNext(Pattern.quote("$)}**"))); // prints "true"
System.out.println(sc.hasNext("\\Q$)}**\\E")); // prints "true"
System.out.println(sc.hasNext("$)}**")); // throws PatternSyntaxException

Puoi anche usare il \Q e \E marcatori di citazione, ma ovviamente devi assicurarti che la stringa citata non debba contenere essa stessa \E.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top