我不确定这个代码,但如果要输入" oooooooooo"在提示之后(比如if语句或程序注册的东西" o" as" one"或者什么),你怎么能做出#34; oooooooooo"翻译成" o"?
是否必须手动记下" o"的各种迭代。 (比如," oo"和" ooo"和" oooo" ......等等)。它是否类似于忽略大小写方法,其中O和o变得相同?所以" ooo ..."和" o"最终成为同一个字符串。
答案 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个字符或更长,如果是,则循环遍历整个字符串。如果字符串中的每个字符都相同,则返回该字符串的精简版本。