GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Separar String


#1

Bom dia galera. Estou com um problema aqui e gostaria de pedir uma forma dos mas esperiêntes aqui do forum. Tenho a seguinte String que pode ser desse tamanho ou não depende do valor que estiver na base de dados.

String string = "0609192830323842556572808286878891929598";

preciso separar essa string em partes de dois caracter exemplo 06, 09, 19,........ E assim por diante. Mas até agora não consequi. Aguem ai pode me dar uma força.


#2

Use "for" e "substring". Use também "length" para você poder dimensionar o array de strings resultante. Você sabe dividir por 2?


#3

        String string = "0609192830323842556572808286878891929598";
        String resultado[] = new String[string.length() / 2];
        for (int x = 0; x < resultado.length; x++) {
            resultado[x] = string.substring(x * 2, x * 2 + 2);
            System.out.println(resultado[x]);
        }

#4

Muito obrigado eliangela, mas eu havia acabado de fazer com a dica do entanglement. Valew galera.


#5

Testa assim

	public static Object[] parChar(String conteudo) {
		List<String> lista = new ArrayList<String>();
		char arrayChar[] = conteudo.toCharArray();
		for (int i = 0; i < arrayChar.length;) {
			lista.add(i + 1 < arrayChar.length ? 
								String.valueOf(arrayChar[i]) + String.valueOf(arrayChar[i + 1]) : 
								String.valueOf(arrayChar[i]));
			i += 2;
		}
		if (lista.size() > 0) {
			return lista.toArray();
		} else {
			return null;
		}
	}

#6

Muito obrigado mesmo galera. Mas eu ja havia feito assim com a dica do nossa amigo entanglement
Olha ai o codigo:

public class SepararString {
	public static void main(String[] args) {
		String string = "060919283032384255657280828687889192959878";
		if(string.length() % 2 != 0) {
			string += " ";
		}
		String[] array = new String[string.length() / 2];
		StringBuffer sb = new StringBuffer();
		for(int i = 0; i < array.length; i++) {
			sb.append(string.substring((i * 2), (i * 2 +2))+" ");
		}
		System.out.println(sb.toString());
	}	
}

#7

Saca só, acho que com Regex fica muito mais fácil:

public class Utils {
	public static String[] splitString(String input){
		return input.replaceAll("(..)","$1:").split(":");
	}
	public static void main(String[] args) {
		System.out.println(Utils.splitString("9768574768"));
	}
}

#8

Pois é, quando você só tem um martelo, tudo se parece com pregos :smile:


#9

Muito boa solução. Parabéns.
Precisa de um for no println?

        for (String s : splitString("12345678901234567890") ) {
                System.out.println(s);
        }

#10

barenko muito show o código, Parabens cara.


#11

[quote=ctdaa]
Precisa de um for no println?

        for (String s : splitString("12345678901234567890") ) {
                System.out.println(s);
        }

[/quote]

eheh é, precisa melhorar o printf sim...

ou for, ou Arrays.toString.. como é teste, com arrays vc digita menos (e cá entre nós, sou preguiçoso p/ digitar...).

public static void main(String[] args) {
	System.out.println(Arrays.toString(Utils.splitString("9768574768")));
}

#12