StringBuilder 方法 deleteCharAt 不删除字符
StringBuilder method deleteCharAt not deleting the character
我正在尝试使用 deleteCharAt(0) 方法删除位置 0 处的字符,并将该字符(已复制)追加到末尾。该字符将附加到末尾,但方法 deleteCharAt(0) 未执行。我真的不知道为什么它不起作用。
Input: Test test test
Expected output: esttqw esttqw esttqw
Actual output: ttqw testtqw testtqw
下面是我的代码。非常感谢。
pT = pT.toLowerCase(); //converts the string to lower case
String[] strArr = pT.split(" "); //splits the string into an array
for(String subStr : strArr){ //for each substring in the string array
char first = subStr.charAt(0);
stringBuilder.append(subStr); //converts the string to a stringbuilder object
if((first=='a') || (first == 'e') || (first == 'i') || (first == 'o') || (first == 'u')){ //starts with a vowel
stringBuilder.append((char)charRand1); //appends y1 to the end of the string
stringBuilder.append((char)alphaRand3); //appends x3 to the end of the string
stringBuilder.append((char)alphaRand4); //appends x4 to the end of the string
stringBuilder.append(" ");
encryptedSS = stringBuilder.toString(); //converts stringbuilder back to string
}
else{ //starts with a consonant
stringBuilder.deleteCharAt(0); //deletes the first character
stringBuilder.append(first); //appends the first character to the end of the word
stringBuilder.append((char)alphaRand1); //append x1 to the end of the word
stringBuilder.append((char)alphaRand2); //append x2 to the end of the word*/
stringBuilder.append(" ");
encryptedSS = stringBuilder.toString(); //converts string builder back to an array
}
}
您的代码片段没有显示您初始化的位置 stringBuilder
,但似乎您只在循环之外执行了一次。因此,调用 deleteCharAt(0)
只是删除整个结果 的第一个字符 ,而不是您当前正在处理的字符串。为了避免这种情况,您可以为您处理的每个字符串创建一个临时 StringBuilder
:
for(String subStr : strArr) {
// New StringBuilder per String
StringBuilder stringBuilder = new StringBuilder(subStr);
char first = subStr.charAt(0);
if ((first=='a') || (first == 'e') || (first == 'i') || (first == 'o') || (first == 'u')){ //starts with a vowel
stringBuilder.append((char)charRand1); //appends y1 to the end of the string
stringBuilder.append((char)alphaRand3); //appends x3 to the end of the string
stringBuilder.append((char)alphaRand4); //appends x4 to the end of the string
stringBuilder.append(" ");
encryptedSS = stringBuilder.toString(); //converts stringbuilder back to string
}
else{ //starts with a consonant
stringBuilder.deleteCharAt(0); //deletes the first character
stringBuilder.append(first); //appends the first character to the end of the word
stringBuilder.append((char)alphaRand1); //append x1 to the end of the word
stringBuilder.append((char)alphaRand2); //append x2 to the end of the word*/
stringBuilder.append(" ");
encryptedSS = stringBuilder.toString(); //converts string builder back to an array
}
我需要向 assemble 所有子字符串添加另一个 StringBuilder 对象。
pT = pT.toLowerCase(); //converts the string to lower case
String[] strArr = pT.split(" "); //splits the string into an array
for(String subStr : strArr){ //for each substring in the string array
char first = subStr.charAt(0);
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(subStr);
if((first=='a') || (first == 'e') || (first == 'i') || (first == 'o') || (first == 'u')){ //starts with a vowel
stringBuilder.append((char)charRand1); //appends y1 to the end of the string
stringBuilder.append((char)alphaRand3); //appends x3 to the end of the string
stringBuilder.append((char)alphaRand4); //appends x4 to the end of the string
stringBuilder.append(" ");
encryptedSS = stringBuilder.toString(); //converts stringbuilder back to string
}
else{ //starts with a consonant
stringBuilder.deleteCharAt(0); //deletes the first character
stringBuilder.append(first); //appends the first character to the end of the word
stringBuilder.append((char)alphaRand1); //append x1 to the end of the word
stringBuilder.append((char)alphaRand2); //append x2 to the end of the word*/
stringBuilder.append(" ");
encryptedSS = stringBuilder.toString(); //converts string builder back to an array
}
builder2.append(encryptedSS); //appends the encrypted substring to the stringbuilder
}
我正在尝试使用 deleteCharAt(0) 方法删除位置 0 处的字符,并将该字符(已复制)追加到末尾。该字符将附加到末尾,但方法 deleteCharAt(0) 未执行。我真的不知道为什么它不起作用。
Input: Test test test
Expected output: esttqw esttqw esttqw
Actual output: ttqw testtqw testtqw
下面是我的代码。非常感谢。
pT = pT.toLowerCase(); //converts the string to lower case
String[] strArr = pT.split(" "); //splits the string into an array
for(String subStr : strArr){ //for each substring in the string array
char first = subStr.charAt(0);
stringBuilder.append(subStr); //converts the string to a stringbuilder object
if((first=='a') || (first == 'e') || (first == 'i') || (first == 'o') || (first == 'u')){ //starts with a vowel
stringBuilder.append((char)charRand1); //appends y1 to the end of the string
stringBuilder.append((char)alphaRand3); //appends x3 to the end of the string
stringBuilder.append((char)alphaRand4); //appends x4 to the end of the string
stringBuilder.append(" ");
encryptedSS = stringBuilder.toString(); //converts stringbuilder back to string
}
else{ //starts with a consonant
stringBuilder.deleteCharAt(0); //deletes the first character
stringBuilder.append(first); //appends the first character to the end of the word
stringBuilder.append((char)alphaRand1); //append x1 to the end of the word
stringBuilder.append((char)alphaRand2); //append x2 to the end of the word*/
stringBuilder.append(" ");
encryptedSS = stringBuilder.toString(); //converts string builder back to an array
}
}
您的代码片段没有显示您初始化的位置 stringBuilder
,但似乎您只在循环之外执行了一次。因此,调用 deleteCharAt(0)
只是删除整个结果 的第一个字符 ,而不是您当前正在处理的字符串。为了避免这种情况,您可以为您处理的每个字符串创建一个临时 StringBuilder
:
for(String subStr : strArr) {
// New StringBuilder per String
StringBuilder stringBuilder = new StringBuilder(subStr);
char first = subStr.charAt(0);
if ((first=='a') || (first == 'e') || (first == 'i') || (first == 'o') || (first == 'u')){ //starts with a vowel
stringBuilder.append((char)charRand1); //appends y1 to the end of the string
stringBuilder.append((char)alphaRand3); //appends x3 to the end of the string
stringBuilder.append((char)alphaRand4); //appends x4 to the end of the string
stringBuilder.append(" ");
encryptedSS = stringBuilder.toString(); //converts stringbuilder back to string
}
else{ //starts with a consonant
stringBuilder.deleteCharAt(0); //deletes the first character
stringBuilder.append(first); //appends the first character to the end of the word
stringBuilder.append((char)alphaRand1); //append x1 to the end of the word
stringBuilder.append((char)alphaRand2); //append x2 to the end of the word*/
stringBuilder.append(" ");
encryptedSS = stringBuilder.toString(); //converts string builder back to an array
}
我需要向 assemble 所有子字符串添加另一个 StringBuilder 对象。
pT = pT.toLowerCase(); //converts the string to lower case
String[] strArr = pT.split(" "); //splits the string into an array
for(String subStr : strArr){ //for each substring in the string array
char first = subStr.charAt(0);
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(subStr);
if((first=='a') || (first == 'e') || (first == 'i') || (first == 'o') || (first == 'u')){ //starts with a vowel
stringBuilder.append((char)charRand1); //appends y1 to the end of the string
stringBuilder.append((char)alphaRand3); //appends x3 to the end of the string
stringBuilder.append((char)alphaRand4); //appends x4 to the end of the string
stringBuilder.append(" ");
encryptedSS = stringBuilder.toString(); //converts stringbuilder back to string
}
else{ //starts with a consonant
stringBuilder.deleteCharAt(0); //deletes the first character
stringBuilder.append(first); //appends the first character to the end of the word
stringBuilder.append((char)alphaRand1); //append x1 to the end of the word
stringBuilder.append((char)alphaRand2); //append x2 to the end of the word*/
stringBuilder.append(" ");
encryptedSS = stringBuilder.toString(); //converts string builder back to an array
}
builder2.append(encryptedSS); //appends the encrypted substring to the stringbuilder
}