Modificar caractere em uma determinada posição da String

Olá pessoal, boa tarde.

Tenho uma String Nome = “Maria”.
E um char letra = ‘o’;
Como faço para adicionar esse char em uma determinado posição da String Nome?? Ex: Nome[4] = letra;

Muito obrigado.

Fabricio da Silva Soares

StringBuffer buff = new StringBuffer( "Maria" ); buff.insert(4, 'o');

[quote=“umcertoalguem”]Tenho uma String Nome = “Maria”.
E um char letra = ‘o’;
Como faço para adicionar esse char em uma determinado posição da String Nome?? Ex: Nome[4] = letra;
[/quote]

A rigor você não consegue fazer isso porque Strings são objetos “imutáveis”.

O que você faz na verdade é copiar o conteúdo para algum outro objeto, (de preferência para um StringBuffer, que é “mutável”, mas você também pode usar um char[]), efetuar a alteração, e criar uma nova String.

Cuidado: StringBuffer.insert, como o nome diz, insere alguma coisa; não a substitui.

class Test125 { public static void main(String[] args) { String nome = "Maria"; //-- Primeira forma - usando StringBuffer StringBuffer sbNome = new StringBuffer(nome); // criou-se aqui um StringBuffer sbNome.setCharAt(4, 'o'); nome = sbNome.toString(); // criou-se aqui uma nova String System.out.println (nome); // Imprime "Mario" //-- Segunda forma - usando char[] char[] chNome = nome.toCharArray(); // aqui se criou um char[] chNome[4] = 'e'; nome = new String(chNome); // criou-se aqui uma nova String System.out.println (nome); // Imprime "Marie" } }

E é claro tem o jeito “VB” de fazer, que obviamente não recomendo - Java não é VB e Bill Joy (da Sun) não é Bill Gates (de Marte? ).

String nome = “Maria”;
nome = nome.substring(0,4) + “o”;

Essa operação inocente cria um monte de objetos:

  • nome.substring(0,4) cria uma nova String
  • O operador “+” cria um StringBuffer a partir da String acima, concatena à string “o”, e cria uma nova String

Ou seja, em vez de criar 2 objetos como foi mostrado acima, o jeito VB de fazer cria 3.