не может заменить символ на ноль в строке с помощью StringBuilder

Я пытался использовать StringBuilder, чтобы заменить мой char в индексе «x» на «null».. Итак, предположим, что мой ввод для «mine» — «‹>‹>‹>», но я хочу заменить индекс 2 ( ‹) и 3(>) для «null», поэтому я бы получил в качестве вывода «‹>‹>». Проблема в том, что я не могу оставить второй аргумент sb.setCharAt(2, ''); как '', потому что я получаю сообщение об ошибке, поэтому мне было интересно, что я могу сделать, чтобы получить желаемый результат

Scanner sc = new Scanner(System.in);

String mine = sc.next();

StringBuilder sb = new StringBuilder(mine);
sb.setCharAt(2, '');
sb.setCharAt(3, '');
mine = sb.toString();

System.out.println(mine);

person Alex    schedule 16.05.2020    source источник
comment
Как насчет sb.deleteCharAt(2);   -  person WJS    schedule 16.05.2020
comment
char — это примитив, так что же такое null char?   -  person Abra    schedule 16.05.2020
comment
deleteChatAt действительно сработало, спасибо, чувак!!! Я новичок в программировании, поэтому я не знал этого метода   -  person Alex    schedule 16.05.2020
comment
Согласно Сколько классов в стандартной версии Java? в JDK 12 почти 4500 классов. А теперь подумайте, сколько там методов. Сомневаюсь, что найдется человек, который знает их все. Вот почему существует такая вещь, как javadoc , чтобы вы могли видеть, например, какие методы существуют в классе StringBuilder.   -  person Abra    schedule 16.05.2020


Ответы (3)


Он показывает ошибку, поскольку '' не является символом, «нет символа» не является допустимым символом.

Вы можете использовать StringBuilder#delete для этого:

StringBuilder sb = new StringBuilder("<><><>");
sb.delete(2, 4);
System.out.println(sb);

Если вы используете StringBuilder#deleteCharAt, имейте в виду, что индекс изменился после вызова метода. В вашем случае вы должны последовательно удалить символ из индекса 2.

StringBuilder sb = new StringBuilder("<><><>");
sb.deleteCharAt(2);
sb.deleteCharAt(2);
System.out.println(sb);
person Amit Bera    schedule 16.05.2020

Вы не можете вставить пустой символ. вам нужно использовать deleteCharAt(index) или delete(startIndex,endIndex) - конечный индекс не включен.

forEx-

String mine="<><><>";
StringBuilder sb = new StringBuilder(mine);
sb.deleteCharAt(2);
sb.deleteCharAt(2);
mine = sb.toString();
System.out.println(mine);

Это даст вывод ‹>‹>

person Kowshhal    schedule 16.05.2020

Вы можете сделать это, используя метод deleteCharAt(int index) построителя строк. Но помните, что при каждом вызове он будет изменять строку, поэтому вам нужно вызывать его дважды с одним и тем же индексом. Что-то вроде этого:

Scanner sc = new Scanner(System.in);

        String mine = sc.next();
        StringBuilder sb = new StringBuilder(mine);
        sb.deleteCharAt(2);
        sb.deleteCharAt(2);
        System.out.println(sb.toString());
person Loui    schedule 16.05.2020