public String setPassword(String username) {
int passl = 8;
String s = username;
if(s.length()<passl) {
s+="*";
}
if(s.length()>passl) {
s=s.substring(0,passl);
}
return s.replaceAll( "[aeiou]", "*" );
}
我有这个代码。当获得用户名时,它将所有元音替换为*,现在我需要将首先找到的字母字符替换为大写字符。就像用户名是AdrianDe一样,它必须返回这样的内容* Dr ** nD *
答案 0 :(得分:1)
您可以执行以下操作:
public class New {
public static void main(String[] args) {
String username="AdrianDe";
System.out.println(setPassword(username));
System.out.println(firstLetterCap(setPassword(username)));
}
static String setPassword(String username) {
int passl = 8;
String s = username;
if(s.length()<passl) {
s+="*";
}
if(s.length()>passl) {
s=s.substring(0,passl);
}
return s.replaceAll( "[AEIOUaeiou]", "*" );
}
static String firstLetterCap(String s) {
int i;
StringBuffer sb=new StringBuffer();
for (i = 0; i < s.length(); i++) {
if (Character.isLetter(s.charAt(i)))
break;
sb.append(s.charAt(i));
}
sb.append((char)(s.charAt(i)-32));
sb.append(s.substring(i+1,s.length()));
return sb.toString();
}
}
输出:
*dr**nD*
*Dr**nD*
答案 1 :(得分:1)
这是缺少的部分:
String result = s.replaceAll("(?i)[aeiou]", "*"); // (?i) for case insensitive
Pattern pattern = Pattern.compile("([a-zA-Z])"); // any character
Matcher matcher = pattern.matcher(result);
if(matcher.find()){
result = matcher.replaceFirst(matcher.group(0).toUpperCase());
}
完整方法:
public String setPassword(String username) {
int passl = 8;
String s = username;
if (s.length() < passl) {
s += "*";
}
if (s.length() > passl) {
s = s.substring(0, passl);
}
s = s.replaceAll("(?i)[aeiou]", "*"); // (?i) for case insensitive
Pattern pattern = Pattern.compile("([a-zA-Z])"); // any character
Matcher matcher = pattern.matcher(s);
if (matcher.find()) {
s = matcher.replaceFirst(matcher.group(0).toUpperCase());
}
return s;
}