如何将单个字符的多个输入注册为一个字符?

时间:2017-10-20 21:23:06

标签: java methods

我不确定这个代码,但如果要输入" oooooooooo"在提示之后(比如if语句或程序注册的东西" o" as" one"或者什么),你怎么能做出#34; oooooooooo"翻译成" o"?

是否必须手动记下" o"的各种迭代。 (比如," oo"和" ooo"和" oooo" ......等等)。它是否类似于忽略大小写方法,其中O和o变得相同?所以" ooo ..."和" o"最终成为同一个字符串。

4 个答案:

答案 0 :(得分:0)

使用正则表达式:

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 ,则字符不完全相同,否则它将返回表示为字符串的单个字符。

答案 1 :(得分:0)

尽管对于这个用例可能有些过分,但了解如何在将来使用正则表达式会很有帮助。 Java提供了一个名为Pattern的正则表达式库。例如,regex / o + ne /将匹配任何字符串" o ... ne"至少有一个" o"。

答案 2 :(得分:0)

使用正则表达式/(.)\1+/String#replaceAll()匹配两个或多个相同字符的运行,然后将匹配项替换为使用$1标识的第一个匹配组的值如下:

public static String squeeze(String input) {
    return input.replaceAll("(.)\\1+", "$1");
}

String result = squeeze("aaaaa bbbbbbb cc    d"); 

assert(result.equals("a b c d"));

答案 3 :(得分:-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);
}

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