如何将此特定字符转换为大写?

时间:2016-02-23 17:39:02

标签: java string

我有一个字符串s,我需要迭代并将所有小写字母转换为大写字母,大写字母转换为" _"

String consonant = "bcdfghjklmnpqrstvwxyz";
String upperconsonant = "BCDFGHJKLMNPQRSTVWXYZ";
for (int i = 0; i < s.length(); i++) {
    String consonantletter = s.substring(i, i + 1);

    if (upperconsonant.toUpperCase().contains(consonantletter) == true) {
        s = s.replace(s.charAt(i), '_');

    } else if (consonant.contains(consonantletter) == true) {
        s=s.replace(s.charAt(i),?????);
    }
}
return s;

我不确定如何更换问号中的字符,如果它是小写字母,则使用其自身的大写版本。我尝试将字符转换为大写,但是收到错误。

2 个答案:

答案 0 :(得分:2)

逐个解析String的char数组

final String lConsonants = "bcdfghjklmnpqrstvwxyz";
final String uConsonants = lConsonants.toUpperCase();
char[] chars = s.toCharArray();
for (int i = 0; i < chars.length; i++) {
    int j = lConsonants.indexOf(chars[i]);
    if (j > -1)
        chars[i] = uConsonants.charAt(j);
    else if (uConsonants.indexOf(chars[i]) > -1)
        chars[i] = '_';
}
s = new String(chars);

答案 1 :(得分:1)

使用以下代码段可以轻松完成:

public static void main (String[] args)
{
    String str = "asdfQWERTYzxcv";
    System.out.println(str.replaceAll("[A-Z]","_").toUpperCase());
}

输出:

ASDF______ZXCV