Этот метод, который я пытался записать, должен брать строку, а затем массив строк, которые должны быть вставлены в исходную строку любым символом "_"
, с символом a/an перед ним, в зависимости от того, что подходит. Он будет использоваться, если строки, которые нужно вставить, являются переменными, и я не знаю, должно ли оно быть или. Но это не сработает. Например, если theString
составляет всего "_"
и array
- {pineapple}
, то он печатает a pineapple_
. Если theString
- "I am holding _, which is not a fruit, like _"
и array
- {pineapple, apple}
, он печатает I am holding _, which is not a fruit, like a pinapple_
. Я посмотрел на него, но я не могу найти проблему. Я не уверен, как работает класс stringBuilder
, поэтому проблема может быть связана с этим. Спасибо за любую помощь, которую вы можете мне дать!Использование StringBuilder для заполнения пробелов в строке
public static void printWithVar(String theString, String[] array){
int arrayPosition = 0;
String insert;
StringBuilder builder = new StringBuilder(theString);
for (int i = 0;i <= theString.length();i++){
// if a "_" is found
if (theString.substring(i).equals("_")){
// if the first letter is a vowel
if (array[arrayPosition].substring(0).equalsIgnoreCase("a") || array[arrayPosition].substring(0).equalsIgnoreCase("e") || array[arrayPosition].substring(0).equalsIgnoreCase("i") || array[arrayPosition].substring(0).equalsIgnoreCase("o") || array[arrayPosition].substring(0).equalsIgnoreCase("u")){
builder.deleteCharAt(i);
insert = "an " + array[arrayPosition];
}
// if just an "a"
else{
builder.deleteCharAt(i);
insert = "a " + array[arrayPosition];
}
builder = new StringBuilder(theString = theString.substring(0, i) + insert + theString.substring(i));
arrayPosition++;
i += insert.length();
// if there are no more strings to insert
if (arrayPosition == array.length){
break;// for loop searching for "_" characters
}
}// end if an "_" is found
}// end loop
System.out.println(builder.toString());
}// end printWithVar
Подсказка:., Вместо того, чтобы играть с '.substring() равно()', просто [ '.split ("_")'] (http://docs.oracle.com/javase/6 /docs/api/java/lang/String.html#split%28java.lang.String,%20int%29) исходную строку. Вам нужно будет только добавить куски вашего заменяющего массива между разделенными строками. Кроме того, попробуйте присвоить имена вашим переменным, чтобы их цель была очевидна из имен; он действительно помогает писать более чистый код. – 9000