Ich schreibe ein Programm, in dem der Benutzer einen String im folgenden Format eingibt:
"What is the square of 10?"
- Ich muss überprüfen, ob der String eine Nummer enthält
- und extrahieren Sie dann nur die Zahl.
- Wenn ich
.contains("\\d+")
oder verwende.contains("[0-9]+")
, kann das Programm keine Zahl in der Zeichenfolge finden, unabhängig von der Eingabe, sondern.matches("\\d+")
funktioniert nur, wenn nur Zahlen vorhanden sind.
Was kann ich als Lösung zum Suchen und Extrahieren verwenden?
Antworten:
Versuche dies
quelle
Wenn Sie die erste Zahl aus der Eingabezeichenfolge extrahieren möchten, können Sie Folgendes tun:
Beispiele:
quelle
Ich denke, es ist schneller als Regex.
quelle
s=s.replaceAll("[*a-zA-Z]", "")
ersetzt alle Alphabetes=s.replaceAll("[*0-9]", "")
ersetzt alle ZahlenWenn Sie mehr als zwei Ersetzungen durchführen, erhalten Sie alle Zeichenfolgen mit Sonderzeichen
Wenn Sie nur ganze Zahlen aus a extrahieren möchten
String s=s.replaceAll("[^0-9]", "")
Wenn Sie nur Alphabete aus a extrahieren möchten
String s=s.replaceAll("[^a-zA-Z]", "")
Viel Spaß beim Codieren :)
quelle
Ich konnte kein einziges korrektes Muster finden. Bitte folgen Sie der Anleitung für eine kleine und süße Lösung.
quelle
Der folgende Code reicht aus für "Überprüfen Sie, ob ein String in Java Zahlen enthält".
quelle
quelle
Versuchen Sie das folgende Muster:
quelle
"please"
dies fehlschlagen wird. Außerdem gibt es im Beispiel von OP ein "?" zu erklären."10"
für Beispiel.Die Lösung, mit der ich mich entschieden habe, sieht folgendermaßen aus:
Ich bin sicher, dass es keine perfekte Lösung ist, aber es hat meinen Bedürfnissen entsprochen. Vielen Dank für die Hilfe. :) :)
quelle
Sie können dies versuchen
quelle
Da Sie eine Zahl nicht nur suchen, sondern auch extrahieren möchten, sollten Sie eine kleine Funktion schreiben, die dies für Sie erledigt. Gehen Sie Buchstabe für Buchstabe, bis Sie eine Ziffer erkennen. Ah, ich habe gerade den erforderlichen Code für Sie im Stackoverflow gefunden: Finden Sie eine Ganzzahl in einer Zeichenfolge . Schauen Sie sich die akzeptierte Antwort an.
quelle
quelle
.matches(".*\\d+.*")
funktioniert nur für Zahlen, aber nicht für andere Symbole wie//
oder*
etc.quelle
ASCII befindet sich am Anfang von UNICODE. Sie können also Folgendes tun:
Ich bin sicher, Sie können die anderen Werte herausfinden ...
quelle