查找第一个字母字符,并将其替换为大写字符

时间:2019-11-17 19:05:20

标签: java

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 *

2 个答案:

答案 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;
    }
相关问题