如何将所有字母替换为下划线

时间:2016-05-02 05:30:13

标签: java

我正在制作一个刽子手游戏。我想将所有字母(小写和大写)更改为下划线。这是我的代码:

    _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

我的代码没有将字母替换为下划线。

3 个答案:

答案 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);
}