我知道如何在没有正则表达式的情况下从字符串中删除重复字符并保留第一次出现的内容:
关于我的问题:是否可以使用正则表达式从字符串中删除重复字符,但保留第一次出现而不是最后一次?
我为什么要问这个问题:我遇到了这个代码高尔夫答案,使用以下函数(基于上面的第一个示例):
"我想知道是否可以使用正则表达式和字符串输入来更短地完成此操作。但即使更长,我也只是好奇是否可能在保留每个字符的第一个出现的情况下,使用正则表达式从字符串中删除重复的字符。"
String method(String s){
String result = "";
for(char c : s.toCharArray()){
result += result.contains(c+"")
? ""
: c;
}
return result;
}
// Example input: "Type unique chars!"
// Output: "Type uniqchars!"
我知道如何使用正则表达式从字符串中删除重复的字符并保留最后一次出现:
String method(String s){
return s.replaceAll("(.)(?=.*\\1)", "");
}
// Example input: "Type unique chars!"
// Output: "Typnique chars!"
关于我的问题:是否可以使用正则表达式从字符串中删除重复字符,但保留第一次出现而不是最后一次?
我为什么要问这个问题:我遇到了这个代码高尔夫答案,使用以下函数(基于上面的第一个示例):
String f(char[]s){String t="";for(char c:s)t+=t.contains(c+"")?"":c;return t;}
"我想知道是否可以使用正则表达式和字符串输入来更短地完成此操作。但即使更长,我也只是好奇是否可能在保留每个字符的第一个出现的情况下,使用正则表达式从字符串中删除重复的字符。"
String g(StringBuilder s){return new StringBuilder(s.reverse().toString().replaceAll("(?s)(.)(?=.*\\1)", "")).reverse().toString();}
。 - Wiktor StribiżewString h(StringBuffer s){return""+new StringBuffer((s.reverse()+"").replaceAll("(.)(?=.*\\1)","")).reverse();}
- Kevin Cruijssen