Implementiert einen lexikalischen Scanner. Wie kann ich Zeichensätze implementieren? die meisten Zeichensätze liegen in der Bereichsform, d. h. A-Z, h-L e.t.c. Und ich muss prüfen, ob ein Zeichen, ch ein Mitglied eines Zeichensatzes ist. Welche effiziente Datenstruktur kann ich in Java außer Arrays und Bit Set verwenden?Zeichensätze
0
A
Antwort
0
Sie könnten einen Satz von Zeichenobjekten erstellen und mit der contains-Methode überprüfen.
2
Haben Sie in Betracht gezogen, einen Scannergenerator wie JFlex zu verwenden?
Sie geben die Sprache an, die Sie scannen möchten, und JFlex erzeugt Java-Code für Sie.
2
eine HashSet
zusammen mit dem "wrapper class" für char
Verwendung: java.lang.Character
:
Set<Character> s = new HashSet<Character>();
s.add('a');
s.add('b');
usw.
1
Apache Commons Lang die CharRange Klasse umfasst, die ohne Rückgriff auf Schleifen zusammenhängende Bereiche von Zeichen effizient darstellt, Iteratoren und Sets.
0
Haben Sie sich ANTLR angesehen?
0
Sie HashSet direkt verwenden können, oder Sie können eine Wrapper-Klasse so etwas wie die folgenden erstellen, damit Sie die Sätze kurz und bündig instanziieren:
public class MyCharSet extends Set<Character> {
/**
* @param ranges an N x 2 array representing inclusive character ranges.
*/
public MyCharSet(char[][] ranges) {
super(intuitSize(ranges));
for (char[] range : ranges) {
for (char ch = range[0]; ch <= range[1]; ch++) {
this.add(ch);
}
}
}
private static int intuitSize(char[][]ranges) {
if (ranges.length == 0) {
return 0;
}
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
for (char[] range : ranges) {
if (range.length != 2 || range[0] > range[1]) {
throw new IllegalArgumentException("bad range");
}
min = Math.min(ranges[0], min);
max = Math.max(ranges[1], max);
}
return max - min;
}
}
Verwandte Themen
- 1. OpenWhisk - Zeichensätze?
- 2. Zeichensätze in C?
- 3. MySQL char & varchar Zeichensätze & Speichergrößen
- 4. Google Webfonts: Wie entlädt man Zeichensätze nach dem Laden?
- 5. Wie kann ich Zeichensätze aus einer PDF-Datei mit Perl extrahieren?
- 6. Wie man eine Zeichenkette, die mehrere Gruppen von Zeichenketten enthält, in Zeichensätze in Java zerlegt
- 7. Was sind die Konsequenzen, wenn Zeichensätze für Trigger und Ansichten nicht mit dem Rest der Datenbank übereinstimmen?
- 8. ist es möglich, Schriftartenliste, die vom Browser unterstützt wird, in jsp mit Request-Objekt zu bekommen?
- 9. Was ist ein Multibyte-Zeichensatz?
- 10. Wie werden Schriftarten in Netbeans UML Editor kleiner?
- 11. So platzieren Sie Compound-Zeichen oben links in der Textansicht
- 12. Was ist der Unterschied zwischen utf8mb4 und utf8 Zeichensatz in mysql?
- 13. Warten Sie, bis die Schriftarten geladen sind, bevor Sie die Webseite
- 14. nicht-lateinische E-Mail-Adresse Validierung
- 15. Webpack Schriftarten laden
- 16. % u Problem in PHP
- 17. Wie kann ich eine Liste installierter Schriftarten unter Windows mit nicht verwaltetem C++ erhalten?
- 18. Ich kann den Zeichensatz nicht herausfinden
- 19. UTF-8 nur in Grails-Datenbanktabellen
- 20. Übergeordnete Standardcodierung in Java
- 21. Erstellen einer mehrsprachigen ActionScript 3.0-Site
- 22. So erkennen Sie ungenutzte Ressourcen in Xamarin.Android?
- 23. Wie ermittle ich den Zeichensatz eines Strings?
- 24. UTF-8 nur in Grails 1.1 Datenbanktabellen
- 25. Slick2D Fonts funktionieren nicht
- 26. Prüfen, ob Zeichen in Delphi (Unicode) geschrieben wird
- 27. wie Pre-recognization innerhalb Flexicapture (nicht sdk)
- 28. UTF-8 nicht in HTML arbeiten bildet
- 29. {%%} und {{}} in Django
- 30. @ font-face verschwommen/fett/verzerrt Glyphen für Remote-Fonts