我正在制作一个刽子手游戏。我想将所有字母(小写和大写)更改为下划线。这是我的代码:
_answer = "HANGMAN";
Log.i("Word", "Answer orig: " + _answer);
_answer = _answer.replaceAll("/[a-zA-Z]+/g", "_");
Log.i("Word", "Answer underscore: " + _answer);
输出结果为:
Answer orig: HANGMAN
Answer underscore: HANGMAN
我的代码没有将字母替换为下划线。
答案 0 :(得分:10)
你必须改变每个"写给下划线的信。
public static void main(String[] args) throws Exception {
String _answer = "HANGMAN";
_answer = _answer.replaceAll("[a-zA-Z]", "_"); // replace each letter with an "_"
System.out.println(_answer);
}
O / P:
_______
注意:您也可以使用(?i)
使其具有案例敏感性
_answer = _answer.replaceAll("(?i)[a-z]", "_");
答案 1 :(得分:1)
在某些编程语言中,您可以指定这样的正则表达式:
<style>
input[type=range] {
width: 300px;
}
ul.ranger {
width: 300px;
display: table;
list-style: none;
margin: 0;
padding: 0;
}
ul.ranger li {
display: table-cell;
text-align: center;
width: 75px;
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
padding: 0;
}
ul.ranger li:last-child {
text-align: right;
}
ul.ranger li:first-child {
text-align: left;
}
</style>
<form>
<input type="range" min="1" max="4" value="2" id="slider" name="protein_activity">
<ul class="ranger">
<li>Light</li>
<li>Moderate</li>
<li>Heavy</li>
<li>Extreme</li>
</ul>
</form>
这是用于定义正则表达式的特定于语言的语法,而/[a-zA-Z]+/g
表示&#34; global&#34;,即根据需要重复多次。
在 Java 中,正则表达式以字符串文字形式给出。没有特殊的正则表达式语法。
未使用g
选项,但您可以通过选择正确的方法获得相同的行为:replaceFirst()
表示仅一次,[g
与指定{相同{1}}(全局)选项。
因此,replaceAll()][1]
应为g
。
如果您没有replaceAll("/[a-zA-Z]+/g", "_")
,则表示您已使用replaceAll("[a-zA-Z]+", "_")
。
但是,您说&#34;将所有字母(小写和大写)更改为下划线&#34; 。你的意思是&#34;所有写给单的字母都是下划线&#34; (这是你正在尝试做的事情),或者你的意思是&#34; 每个字母到下划线&#34;?
如果是后者,请使用以下方法之一:
g
答案 2 :(得分:-1)
public static void main(String[] args)
{
String word = "HUNUMAN";
StringBuilder gletters = new StringBuilder("_");
String mainword = word.replaceAll("[^" + gletters + "]", "_");
System.out.println(mainword);
}