java - .replaceAll() 方法无法正常工作

标签 java regex string

作为问题的一些背景,我加载到一个文本文件中,然后从该文本文件中分配一个短语以成为 randomPirateWord,然后我将字母更改为该文本文件中的字母以成为 ** 的并且可以正常工作。但是,当我要求用户猜测一个字母时,它无法正常工作,如果他们猜错了,那么代码可以正常工作,但如果他们猜对了字母,代码就无法正常工作。我已将错误消息放在代码下方:

if (!escape.equalsIgnoreCase("m")){
                    System.out.print(" Type the letter you want to guess: ");
                    char letter = input.nextLine().charAt(0); 

if(m.getRandomPirateWord().contains(letter+"")){
                        System.out.println(m.getRandomPirateWord().replaceAll("*",letter+""));
                    }
<小时/>
Error message:
Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0
*
^
    at java.util.regex.Pattern.error(Pattern.java:1924)
    at java.util.regex.Pattern.sequence(Pattern.java:2090)
    at java.util.regex.Pattern.expr(Pattern.java:1964)
    at java.util.regex.Pattern.compile(Pattern.java:1665)
    at java.util.regex.Pattern.<init>(Pattern.java:1337)
    at java.util.regex.Pattern.compile(Pattern.java:1022)
    at java.lang.String.replaceAll(String.java:2162)
    at uk.ac.aber.dcs.pirate_hangman.TextBasedGame.runTextBasedGame(TextBasedGame.java:45)
    at uk.ac.aber.dcs.pirate_hangman.Application.runApplication(Application.java:19)
    at uk.ac.aber.dcs.pirate_hangman.Main.main(Main.java:6)

最佳答案

使用String#replace()而不是String#replaceAll()。后者使用正则表达式模式进行替换,其中 * 是元字符,需要转义。

关于java - .replaceAll() 方法无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23289902/

上一篇:Java对称加密方法

下一篇:Java 输入/输出

相关文章:

java - Android如何绘制像这样的线性布局角形状

java - lucene:如何执行增量索引并避免 'delete and redo'

java - junit 测试中的 spring-data-jpa bean 验证

c# - 如何在 C# 中匹配和捕获正则表达式

c - 如何用另一个文件中的另一个数据替换一个文件中的数据?

java - 线性搜索数组和字符串

java.lang.Exception : Error while transmitting data how to solve this error

regex - 组的 gst 正则表达式不匹配会生成异常

Javascript 正则表达式查找和替换问题

Java jList1.getSelectedValue() 返回一个对象。我需要所选列表项中的字符串。