如何将当前Pattern
中未存储在变量猜测中的所有内容替换为“ - ”?猜测会随着不同的方法调用而改变。我想用一个“ - ”替换不是字符猜测的东西(在这种情况下=>'e')。如何使用模式内的变量来替换除了?
String word = "ally";
char guess = 'e';
String currentPattern = word.replaceAll("[^guess]", "-");
很明显,这是行不通的。
如何将当前Pattern
中未存储在变量猜测中的所有内容替换为“ - ”?猜测会随着不同的方法调用而改变。我想用一个“ - ”替换不是字符猜测的东西(在这种情况下=>'e')。如何使用模式内的变量来替换除了?
String word = "ally";
char guess = 'e';
String currentPattern = word.replaceAll("[^guess]", "-");
很明显,这是行不通的。
你几乎拥有它。使用字符串连接:
String currentPattern = word.replaceAll("[^" + guess + "]", "-");
,如果你不具备内guess
正则表达式元字符,这就需要进行字符类中逃脱这种方法才有效。否则会抛出一个PatternSyntaxException
。
这question表明你的情况,你只添加char
到你的角色分类,PatternSyntaxException
甚至不会,如果你不逃避任何事情发生。
但是,当字符互换时,这会替换单词吗?我的意思是,如果这个词=“abcdfeghijklmnop”和输出将相同的时候guess =“ghij”和guess =“jihg”。 – namalfernandolk 2013-02-21 08:01:40
@NamalFernando:'guess'是一个'char',所以它总是只有一个字符。 – jlordo 2013-02-21 08:02:33
哎呀!错过了。我的错! :) – namalfernandolk 2013-02-21 08:05:02
你几乎在那里,只需使用+
串联运算符连接猜测和正则表达式部分。
String word = "ally";
char guess = 'e';
String currentPattern = word.replaceAll("[^"+guess+"]", "-");
System.out.println(currentPattern);
你需要明确包括正则表达式的字符串变量:
String word = "alely";
char guess = 'e';
System.out.println(word.replaceAll(String.format("[^%s]", guess), "-"));
把它变成一个方法是什么?
public String replaceAllExcept(String input, char pattern) {
return input.replaceAll("[^" + pattern + "]", "-");
}
System.out.println(replaceAllExcept("ally", 'e');
System.out.println(replaceAllExcept("tree", 'e');
这是一个Java问题。与正则表达式无关:) – 2013-02-21 07:54:27
对不起,我是新来的:) – austindg 2013-02-21 07:58:28
你必须像jlordo说的那样将猜测作为一个变量加入。无论如何,我有一段时间后有类似的问题:http://stackoverflow.com/questions/14932510/how-to-select-one-or-more-characters-that-is-not-intersect-with-a-particular- wor – namalfernandolk 2013-02-21 08:10:11