Modificar caractere em uma determinada posição da String

3 respostas
U

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

3 Respostas

danieldestro

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

T
<blockquote><div class="quote-author">“umcertoalguem”:</div>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;

</blockquote>

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 &#123; public static void main&#40;String&#91;&#93; args&#41; &#123; String nome = &quot;Maria&quot;; //-- Primeira forma - usando StringBuffer StringBuffer sbNome = new StringBuffer&#40;nome&#41;; // criou-se aqui um StringBuffer sbNome.setCharAt&#40;4, 'o'&#41;; nome = sbNome.toString&#40;&#41;; // criou-se aqui uma nova String System.out.println &#40;nome&#41;; // Imprime &quot;Mario&quot; //-- Segunda forma - usando char&#91;&#93; char&#91;&#93; chNome = nome.toCharArray&#40;&#41;; // aqui se criou um char&#91;&#93; chNome&#91;4&#93; = 'e'; nome = new String&#40;chNome&#41;; // criou-se aqui uma nova String System.out.println &#40;nome&#41;; // Imprime &quot;Marie&quot; &#125; &#125;

T

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.

Criado 28 de setembro de 2004
Ultima resposta 28 de set. de 2004
Respostas 3
Participantes 3