Как вставить символ в строку в любой заданной точке? (Обработка)

Я пытаюсь вставить символ в строку с помощью обработки.

После некоторого прочтения я попробовал следующий (я думаю, 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

Если вы вставляете слева направо, позиции необходимо корректировать после каждой вставки.

Другие вопросы по тегам