Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将所有字母替换为下划线_Java - Fatal编程技术网

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

Java 如何将所有字母替换为下划线,java,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

我正在做一个刽子手游戏。我想把所有字母和大写字母改成下划线。这是我的密码:

    _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

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

您必须将每个字母更改为下划线

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]", "_");

您必须将每个字母更改为下划线

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]", "_");

在某些编程语言中,可以指定如下正则表达式:

/[a-zA-Z]+/g 这是用于定义正则表达式的特定于语言的语法,g表示全局,即根据需要重复多次

在Java中,正则表达式是作为字符串文本给出的。没有特殊的正则表达式语法

不使用g选项,但通过选择正确的方法可以获得相同的行为:仅表示一次,[replaceAll][1]与指定g全局选项相同

所以,replaceAll/[a-zA-Z]+/g,u应该是replaceAll[a-zA-Z]+,u

如果你没有g,你会使用replaceFirst[a-zA-Z]+

但是,您说过将所有字母和大写改为下划线。你是说所有的字母都对应一个下划线,还是说每个字母对应一个下划线

如果是后者,请使用以下选项之一:

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

在某些编程语言中,可以指定如下正则表达式:

/[a-zA-Z]+/g 这是用于定义正则表达式的特定于语言的语法,g表示全局,即根据需要重复多次

在Java中,正则表达式是作为字符串文本给出的。没有特殊的正则表达式语法

不使用g选项,但通过选择正确的方法可以获得相同的行为:仅表示一次,[replaceAll][1]与指定g全局选项相同

所以,replaceAll/[a-zA-Z]+/g,u应该是replaceAll[a-zA-Z]+,u

如果你没有g,你会使用replaceFirst[a-zA-Z]+

但是,您说过将所有字母和大写改为下划线。你是说所有的字母都对应一个下划线,还是说每个字母对应一个下划线

如果是后者,请使用以下选项之一:

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

首先从正则表达式中删除前导和尾随/和g。他们不属于那里。它们被其他语言用作引用和指定选项的替代方法。是的,它们是Perl/vim。Java不使用这种语法。如果你想开发hangman游戏,一种更好的方法是使用一个简单的字符数组来保存你所说的答案。与正则表达式相比,数组查找速度更快,更不容易出错。此外,在每个阶段,你都会发现,随着角色的猜测,管理正则表达式将变得很麻烦。@markspaceandreas谢谢大家。我对regex不太熟悉,只是在网上复制的。这对我很有帮助:首先从正则表达式中删除前导和尾随/和g。他们不属于那里。它们被其他语言用作引用和指定选项的替代方法。是的,它们是Perl/vim。Java不使用这种语法。如果你想开发hangman游戏,一种更好的方法是使用一个简单的字符数组来保存你所说的答案。与正则表达式相比,数组查找速度更快,更不容易出错。此外,在每个阶段,你都会发现,随着角色的猜测,管理正则表达式将变得很麻烦。@markspaceandreas谢谢大家。我对regex不太熟悉,只是在网上复制的。这对我很有帮助:为什么要用字符串生成器呢?那会用替换所有字符而不仅仅是字母?为什么要用字符串生成器呢?那会用替换所有字符而不仅仅是字母_