Как вставить символ в строку в любой заданной точке? (Обработка)
Я пытаюсь вставить символ в строку с помощью обработки.
После некоторого прочтения я попробовал следующий (я думаю, Java) код:
1: String st = new String("abcde");
2: st = StringBuffer(st).insert(2, "C");
и получил следующий ответ:
the function StringBuffer(String) does not exist
Есть ли другой / более простой способ сделать это? Нужно ли использовать StringBuffer? Я довольно начинающий программист, поэтому любая помощь очень ценится.
2 ответа
Итак, я смотрел на обработку 'Extended Language API', и вроде бы не было такой функции из коробки.
Если вы посмотрите на функцию substring() класса String, вы увидите пример, где есть строка, которая разрезается на две части в позиции 2. А затем распечатывается с другими символами между ними. Это поможет тебе дальше?
String str1 = "CCCP";
String str2 = "Rabbit";
String ss1 = str1.substring(2); // Returns "CP"
String ss2 = str2.substring(3); // Returns "bit"
String ss3 = str1.substring(0, 2); // Returns "CC"
println(ss1 + ":" + ss2 + ":" + ss3); // Prints 'CP:bit:CC'
Если мы возьмем ваш пример, это вставило бы 'C' в правильную позицию:
String st = new String("abcde");
String p1 = st.substring(0,2); // "ab"
String p2 = st.substring(2); // "cde"
st = p1 + "C" + p2; // which will result in "abCcde"
Или создайте для него функцию. Имейте в виду, не супер-надежный (без проверок на пустые строки, переполнение и т. Д.), Но выполняет работу:
String insert(original, toInsert, position){
String p1 = original.substring(0,position);
String p2 = original.substring(position);
return p1 + toInsert + p2;
}
...
String st = new String("abcde");
st = insert(st, "C", 2); // "abCcde"
st = insert(st, "D", 4); // "abCcDde"
протестировано на http://sketch.processing.org/
Вы можете вставлять несколько элементов с помощью этой функции, вызывая ее один раз для каждой вставки. Чтобы упростить задачу, вставляйте их справа налево, иначе позиция для вставки будет меняться при вставке слева.
Пример:
String original="The quick fox jumped over lazy dog";
// lets insert "brown" at position 10, "the" at 21, and "'s back" at 34 to make
// "The quick brown fox jumped over the lazy dog's back"
println( original );
original= insertInString( original, "'s back", 34 );
original= insertInString( original, "the ", 26 );
original= insertInString( original, "brown ", 10 );
println( original );
Это сгенерировало следующий вывод:
The quick fox jumped over lazy dog
The quick brown fox jumped over the lazy dog's back
Если вы вставляете слева направо, позиции необходимо корректировать после каждой вставки.