Substituir texto em uma String no FLEX [RESOLVIDO]

12 respostas
brunorota

Olá galera

Eu procurei procurei mais não estou encontrando um método parecido com esse da StringBuilder do java

text.replace(indiceInicial, indiceFinal, "texto");

preciso de um replace que pega o indice incial e final para substituir por outra palavra

O replace que eu encontrei foi replace(texto, textoNovo)

existe um replace parecido com esse dos indices do java para para o FLEX?

valew

12 Respostas

ViniGodoy

Ops… sorry, agora que eu vi que não é java.

Shelson
private function str_replace( replace_with:String, replace:String, original:String ):String
{
var array:Array = original.split(replace_with);
return array.join(replace);
}

veh se ajuda. :wink:

Shelson

ou

var text:String = "Professional Flex 2 is a great Flex resource.";

// available flags: g, i, m, s, x
trace( text.match( /.l.x/ ) ); // Returns: Flex
trace( text.match( /f.e./ ) ); // Returns null (no matches)
trace( text.match( /f.e./i ) ); // Returns: Flex using ignoreCase flag
trace( text.match( /F.e./g ) ); // Returns: Flex,Flex using global flag
trace( text.match( /F[a-z]{3}/g ) ); // Returns: Flex,Flex using global flag
trace( text.match( /\d/ ); // Returns: 2
brunorota

não entendi o seu primeiro exemplo shelson

eu preciso de um método pra fazer isso ó

exemplo

tenho uma String com esse valor “bruno rota sargi”

eu passo para o método o indice do 6 até o 9 referente a palavra rota

e substituo a palavra rota por teste

entendeu?

Shelson

brunorota:
não entendi o seu primeiro exemplo shelson

eu preciso de um método pra fazer isso ó

exemplo

tenho uma String com esse valor “bruno rota sargi”

eu passo para o método o indice do 6 até o 9 referente a palavra rota

e substituo a palavra rota por teste

entendeu?

var str:String = "Hello from Paris, Texas!!!";
trace(str.slice(11,15)); // output: Pari
trace(str.slice(-3,-1)); // output: !!
trace(str.slice(-3,26)); // output: !!!
trace(str.slice(-3,str.length)); // output: !!!
trace(str.slice(-8,-3)); // output: Texas

eh isso ?

Shelson

se prefir olha no site

G

Acho que isso poderá resolver.

public function teste():void
	{
	   a = "Testando";
	   b = a.replace(a.substr(0,3),"Gos");
	   Alert.show(b);	
	}

Se não resolver, talvez encontre algo aqui
http://livedocs.adobe.com/flex/3/html/help.html?content=09_Working_with_Strings_09.html

[]´s

Shelson

gui-jac:
Acho que isso poderá resolver.

public function teste():void
	{
	   a = "Testando";
	   b = a.replace(a.substr(0,3),"Gos");
	   Alert.show(b);	
	}

Se não resolver, talvez encontre algo aqui
http://livedocs.adobe.com/flex/3/html/help.html?content=09_Working_with_Strings_09.html

[]´s

o mesmo site q eu citei nao ? :lol: :shock:

brunorota

Ops nao resolveu nao

Esse método replace que o gui passou funciona praticamente como o replace normal do metodo String

Porque tipo

eu tenho um texto

“teste teste teste teste”

Eu quero substituir a ultima palavra “teste”

Eu usando esse método ele vai substituir a primeira

entendeu?

eu preciso de um método que substitua pelo indice mesmo e nao pelo valor

G

mas aí não seria só você trocar os valores?

tipo:

b = a.replace(a.substr(18,22),“Gos”);

brunorota

nao porque esse a.substr(18,22) ele está apenas capturando o valor do texto

vamos supor que eu tenho o texto

public public public

esse a.substr(14,20), nesse codigo eu apenas capturo o texto “public”

ae no string.replace() eu vou passar o valor do texto, nao interessando a localização dele, e é ae que da errado, porque o replace pega o primeiro valor igual encontrado, entao em vez de ele modificar o terceiro “public” ele vai modificar o primeiro “public” encontrado.

Entendeu?

brunorota

Galera, como eu não achei nenhum método nativo no flex pra fazer o que eu preciso, eu criei meu próprio método

Vou postar aqui pra quando alguém precisar do mesmo problema

public function str_replace(ini:int, fim:int, replace:String):String 
			{  
				var array:ArrayCollection = new ArrayCollection();
				var textoNovo:String = "";
				
				//Carrego o array com cada letra do texto
				for(var i:int = 0; i < textArea.text.length; i++){
					
					array.addItem(textArea.text.charAt(i));
				}
				
				//Deleto o intervalo selecionado
				for(var j:int = ini; j < fim; j++){
					
					array.removeItemAt(ini);
					
				}
				
				//Adiciono o valor novo no intervalo selecionado
				array.addItemAt(replace, ini);
				
				//Converto o array em uma String novamente
				for(var t:int = 0; t < array.length; t++){
					
					textoNovo = textoNovo.concat(array.getItemAt(t) as String);
				}
				
				return textoNovo;
				
			}

Valew a atenção de todos

Obrigado

Criado 14 de setembro de 2010
Ultima resposta 15 de set. de 2010
Respostas 12
Participantes 4