给定一个String str,使用以下规则返回一个字符串,其中所有元音都用数字替换。
上部外壳元音应该用从1开始增加的奇数替换。例如,第一个大写元音将被替换为1,第二个元素用3替换,第三个用5替换,依此类推。
较低的套管元音应该用从2开始的增加偶数代替。例如,第一个小写元音将被替换为2,第二个用4替换,第三个用6替换,依此类推。
可能存在用作替换的数字超过一位数的情况。在这种情况下,元音应该用两个数字替换。
示例:
replaceAllVowels(" Hello")=> " H2ll4"
replaceAllVowels(" HELLO")=> " H1ll2"
replaceAllVowles("你好,这是一个很长的字符串")=> " h2ll4 th6r8 th10s 12s 14 r1618lly l20ng str22ng"
我迷失了这个。非常感谢帮助。
答案 0 :(得分:1)
我决定善待你。确保你从中学到了一些东西。你想要一个方法,通过for循环遍历单词。在此for循环中,您检查每个字符。如果它是某个字符,请替换它并增加数字。
static final char[] lowerVowels = { 'a', 'e', 'i', 'o', 'u'};
static final char[] upperVowels = { 'A', 'E', 'I', 'O', 'U' };
static boolean isUpperVowel(char ch)
{
for (char vowel : upperVowels)
{
if (vowel == ch)
{
return true;
}
}
return false;
}
static boolean isLowerVowel(char ch)
{
for (char vowel : lowerVowels)
{
if (vowel == ch)
{
return true;
}
}
return false;
}
String replaceAllVowels(String word)
{
int oddNumber = 1;
int evenNumber = 2;
for(int i = 0; i < word.length(); i++)
{
if(isUpperVowel())
{
replace it
oddNumber += 2;
}
else if(isLowerVowel())
{
replace it
evenNumber +=2;
}
}
return word;
}
答案 1 :(得分:0)
您可以使用以下内容:
private static final char[] list = { 'A', 'E', 'I', 'O', 'U' };
public static String replaceAllVowels(String word) {
int length = word.length();
char[] string = new char[length];
for (int index = 0; index < length; index++) {
string[index] = getChar(word.charAt(index));
}
return new String(string);
}
public static char getChar(char character) {
int number = isVowel(character);
return number != -1 ? (char) (number + 48) : character;
}
public static int isVowel(char character) {
int index = 0;
for (char vowel : list) {
if (vowel == character || vowel + 32 == character) {
return index;
}
index++;
}
return -1;
}
/**
* You can use this instead if you want
*/
private static int isVowel(char character) {
for (int index = 0; index < list.length; index++) {
char vowel = list[index];
if (vowel == character || vowel + 32 == character) {
return index;
}
}
return -1;
}