我有这个代码,允许我取一个字符串并用越来越多的数字替换所有元音。
例如," abababababababababababa"会给我" 0b1b2b3b4b5b6b7b8b9b10b11"。我试图保持它,以便数字一旦超过9,重置为零并重新开始重新计数(这样" 0b1b2b3b4b5b6b7b8b9b10b11"将改为读取" 0b1b2b3b4b5b6b7b8b9b0b1")。
我无法找到一种在不太复杂的循环中做到这一点的方法。如果有某种方法可以实现这一目标,有人不会想到泄露,那将非常感激。
public static String getNumberString( String s)
{
String word = s;
String word1 = word.replaceAll("[AEIOUaeiou]", "@");
int c = 0;
String word2 = word1;
for( c = 0; c <= word.length(); c++)
{
word2 = word2.replaceFirst("@", Integer.toString(c));
}
return word2;
}
答案 0 :(得分:6)
您可以使用Modulus of 10 (% 10)
,这会将第九位数后的计数换行再次开始。
public static String getNumberString(String s) {
String word = s;
String word1 = word.replaceAll("[AEIOUaeiou]", "@");
int c = 0;
String word2 = word1;
for (c = 0 ; c <= word.length() ; c++) {
word2 = word2.replaceFirst("@", Integer.toString(c % 10));
}
return word2;
}
<强>输出强>
0b1b2b3b4b5b6b7b8b9b0b1
答案 1 :(得分:4)
如何使用modulo?
word2 = word2.replaceFirst("@", Integer.toString(c % 10));
答案 2 :(得分:1)
尝试使用10的模数。它会循环,因为当它达到10的倍数时,模数将再次为0。
答案 3 :(得分:1)
您可以使用c
以外的其他变量作为循环,并使用和if条件,您可以检查c
何时成为9
并将其重置为0
。
public static String getNumberString( String s)
{
String word = s;
String word1 = word.replaceAll("[AEIOUaeiou]", "@");
int c = 0;
String word2 = word1;
for(int i = 0; i <= word.length(); i++)
{
word2 = word2.replaceFirst("@", Integer.toString(c));
if(c == 9) {
c = 0;
} else {
c++;
}
}
return word2;
}
答案 4 :(得分:1)
在你的循环中,你可以做到
for (c = 0; c <= word.length(); c = (c + 1) % 10) {...}
答案 5 :(得分:1)
你必须使用c%10而不是c,就像这段代码一样:
word2 = word2.replaceFirst("@", Integer.toString(c % 10));
答案 6 :(得分:0)
而不是替换为c,您可以使用c % 10
答案 7 :(得分:0)
我会使用String.toCharArray()
。您可以使用% 10
确保count
在第九位数之后换行。另外,我使用StringBuilder
。像,
public static String getNumberString(String str) {
int count = 0;
StringBuilder sb = new StringBuilder();
if (str != null) {
for (char ch : str.toCharArray()) {
switch (Character.toLowerCase(ch)) {
case 'a': case 'e': case 'i': case 'o': case 'u':
sb.append(count);
++count;
count %= 10;
// or maybe, count = (count > 9) ? 0 : count;
break;
default:
sb.append(ch);
}
}
}
return sb.toString();
}
然后你可以像
那样进行测试public static void main(String[] args) {
String out = getNumberString("abababababababababababa");
String expected = "0b1b2b3b4b5b6b7b8b9b0b1";
System.out.println(out.equals(expected));
}
输出
true