In einigen Programmiersprachen, können Sie einen regulären Ausdruck wie folgt angeben :
/[a-zA-Z]+/g
Dies ist eine sprachspezifische Syntax zum Definieren einer Regex, und g
bedeutet "global", d.h. so oft wie nötig wiederholen.
In Java wird eine Regex als String-Literal angegeben. Es gibt keine spezielle Regex-Syntax.
Die g
Option nicht verwendet wird, aber Sie das gleiche Verhalten erhalten, indem die richtige Methode der Wahl: replaceFirst()
bedeutet nur einmal, und [replaceAll()][1]
ist das gleiche wie die g
(global) Option angeben.
Also, replaceAll("/[a-zA-Z]+/g", "_")
sollte replaceAll("[a-zA-Z]+", "_")
sein.
Wenn Sie nicht die g
hätten, hätten Sie replaceFirst("[a-zA-Z]+", "_")
verwendet.
Allerdings sagte man „alle Buchstaben ändern (Groß- und Klein) zu unterstreichen“. Meinst du "alle Buchstaben zu einem einzigen Unterstrich" (was du versuchst zu tun), oder meintest du "jeder Brief an einen Unterstrich"?
Wenn letzteres, eine davon verwenden:
replaceAll("[a-zA-Z]", "_")
replaceAll("(?i)[a-z]", "_") // Flag: CASE_INSENSITIVE
replaceAll("\\p{Alpha}", "_") // POSIX: An alphabetic character [\p{Lower}\p{Upper}]
// For non-english letter support:
replaceAll("(?U)\\p{Alpha}", "_") // Flag: UNICODE_CHARACTER_CLASS
replaceAll("\\p{L}", "_") // Unicode letter category
zunächst den führenden entfernen und Hinter '/' und 'g' von der Regex. Sie gehören nicht dorthin. Sie werden von anderen Sprachen als Alternative zum Zitieren und zum Festlegen von Optionen verwendet. – Andreas
Ja, das sind Perl/vim. Java verwendet diese Syntax nicht. – markspace
Wenn Sie versuchen, das Hangman-Spiel zu entwickeln, ist es viel einfacher, ein einfaches 'char'-Array zu verwenden, um die' _answer' zu halten, wie Sie es nennen. Array-Lookup wird viel schneller und weniger fehleranfällig als ein Regex. Darüber hinaus werden Sie in jeder Phase feststellen, dass die Verwaltung der Regex mühsam wird, wenn die Charaktere erraten werden. – Nosh