Cortar String a cada 255 caracteres

12 respostas
andresmafra

Pessoal, ola, estou com um problema

tenho uma String e gostaria de a cada 255 caracteres cortala em uma nova posição em um array…

como faço isso?

obrigado!

12 Respostas

renamed

Substring

http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html#substring(int, int)

andresmafra

Cara obrigado, mas eu ja tentei…

o problema é que preciso varrer a
String inteira, e não sei como aumentar o parametros final do substring…

renamed

Por que você precisa varrer a String inteira?

andresmafra

porque a cada 255 caracteres irei jogar em um array…

ViniGodoy

E, por que isso te forçaria a ler a String inteira?

davidbuzatto

Vc pode fazer algo parecido com isso aqui:

public static String[] recortaString( String str, int tamanhoRecorte ) {
	
	int tArray = str.length() % tamanhoRecorte == 0 ? str.length() / tamanhoRecorte : ( str.length() / tamanhoRecorte ) + 1;
	String[] array = new String[ tArray ];
	
	StringBuilder sb = new StringBuilder();
	
	int contArray = 0;
	int contChar = 0;
	    	
	for ( char a : str.toCharArray() ) {
		
		sb.append( a );
		contChar++;
		    		
		if ( contChar == tamanhoRecorte ) {
			array[ contArray ] = sb.toString();
			sb = new StringBuilder();
			contChar = 0;
			contArray++;
		}
		
	}
	
	if ( contChar != 0 ) {
		array[ contArray ] = sb.toString();
	}
	
	return array;
	
}

Consulte a documentação, lá vc vai encontrar tudo que precisa para construir a grande maioria dos seus algoritmos.

[]´s

ctdaa

Aprendi esta dica aqui no GUJ! método simples com expressões regulares:

public static String[] splitString(String input){  
        return input.replaceAll("(.{255})","$1:").split(":");  
    }
davidbuzatto
ctdaa:
Aprendi esta dica aqui no GUJ! método simples com expressões regulares:
public static String[] splitString(String input){  
        return input.replaceAll("(.{255})","$1:").split(":");  
    }

Muito melhor ;)

lvolgarini
ctdaa:
Aprendi esta dica aqui no GUJ! método simples com expressões regulares:
public static String[] splitString(String input){  
        return input.replaceAll("(.{255})","$1:").split(":");  
    }

Ola amigo!

Essa sua lógica está meio furada, pois se tiver : em outra posiçao da string seu split vai quebrar errado, sendo assim nao garante o tamanho de 255.

Att.

ctdaa

Tá bom… foi só um exemplo, o programador adapta para sua necessidade… pode escolher um delimitador melhor, pode ser até um caracter não imprimível que o usuário não digita…

Cornelius

Olha, fiz um código bem amador, mas acho que essa é a idéia:

class RecortaString{
	public static void main(String[] args){
		String teste = new String("Antonio Nunes!!!");
		recortaString(teste);
	}

	public static void recortaString(String a){
		final int qtdRecorte = 5; // Aqui defini o tamanho do recorte, no seu caso é 255
		int pontoInicial=0, int pontoFinal=0, int contStr=0;

		while(pontoFinal < a.length()){
			if(contStr == qtdRecorte){
				System.out.println(a.substring(pontoInicial,pontoFinal));
				pontoInicial = pontoFinal;
				contStr = 0;
			}
			else{
				pontoFinal++;
				contStr++;
			}
		}
		if(contStr!=0){// Isso aqui é pra pegar o resto da String
			System.out.println(a.substring((a.length() - contStr),a.length())); 
		}
	}
}

Flws :wink:

andresmafra

Obrigado pessoal. Consegui!

alis não precisa varrer a String…
desculpem pela ignorancia!

Obrigado!

Criado 11 de novembro de 2009
Ultima resposta 12 de nov. de 2009
Respostas 12
Participantes 7