Java 如何将单个字符寄存器的多个输入作为一个字符?

Java 如何将单个字符寄存器的多个输入作为一个字符?,java,methods,Java,Methods,我不确定这方面的代码,但如果在提示后输入“ooooooo”(比如在if语句中或程序将“o”注册为“one”或其他内容),如何将“ooooooo”转换为“o” 是否需要手动记录“o”的各种迭代(如“oo”和“ooo”以及“oooo”…等等)。它是否类似于O和O变得相同的ignore case方法?所以“ooo…”和“o”最终是同一个字符串。使用正则表达式: public static String getSingleCharacter(String input){ if(input

我不确定这方面的代码,但如果在提示后输入“ooooooo”(比如在if语句中或程序将“o”注册为“one”或其他内容),如何将“ooooooo”转换为“o”

是否需要手动记录“o”的各种迭代(如“oo”和“ooo”以及“oooo”…等等)。它是否类似于O和O变得相同的ignore case方法?所以“ooo…”和“o”最终是同一个字符串。

使用正则表达式:

public static String getSingleCharacter(String input){
       if(input == null || input.length() == 0) return null;
       if(input.length() == 1) return input;
       if(!input.toLowerCase().matches("^\\w*?(\\w)(?!\\1|$)\\w*$")){
           return Character.toString(input.toLowerCase().charAt(0));
       }
       return null;
}

如果该方法返回null,则字符不完全相同,否则它将返回表示为字符串的单个字符。

尽管对于这一用例来说可能有些过分,但将来学习如何使用正则表达式将很有帮助。Java提供了一个名为。例如,regex/o+ne/将任何字符串“o…ne”与至少一个“o”匹配。

公共字符串压缩(字符串输入){
如果(input.length>=3){
对于(int i=0;i

这将检查字符串是否为3个字符或更长,如果是,则循环遍历整个字符串。如果字符串中的每个字符都相同,则返回字符串的压缩版本。

使用正则表达式
/()\1+/
并匹配两个或多个相同字符的运行,然后用第一个匹配组的值替换匹配,该匹配组由
$1
标识,如下所示:

公共静态字符串压缩(字符串输入){
返回输入。replaceAll(“(..\\1+”,“$1”);
}
字符串结果=挤压(“aaaaa BBBBB cc d”);
断言(result.equals(“abcd”));

我想你在找。如果您不熟悉正则表达式,这是一个很好的起点。您可以使用正则表达式并匹配
o+
,意思是“o”重复1次或更多次。您的尝试在哪里?
public string condense(String input) {
    if(input.length >= 3) {
        for(int i=0; i< input.length-2; i++){
            if(input.substring(i,i+1) != input.substring(i+1,i+2)){
                return input;
            }
        }
    }
    return input.substring(0,1);
}