public void escrever(String linha) {
String linha1 = linha;
String novalinha="";
ArrayList<String> linhas = new ArrayList<String>();
if(linha1.length() <=20) {
System.out.println(linha1);
}else {
while(linha1.length() >20) {
linhas.add(linha.substring(21));
novalinha =linha1.substring(21);
Dividir uma String a cada 20 caracteres
7 Respostas
Olá, acho que para o que você precisa apenas o substring já resolve o problema. Mas em todo caso dê uma olhada na biblioteca da Apache - The Lang component: http://commons.apache.org/lang/
Dê uma estudada nos métodos estáticos da classe StringUtils.
Tem uma classe interessante chamada StringW da biblioteca Taglibs da Apache também.
Há um método estático dessa classe StringW chamado wordWrap. Veja mais ou menos um código:
import org.apache.taglibs.string.util.StringW;
public class Teste {
public static void main(String[] args) {
String str= "1a1 b 1c1d1e1f1g1h1i1j1k1l1m1n1o";
String listaStr = StringW.wordWrap(str, 20);
System.out.println(listaStr);
}
}
o que vc tem que fazer no while:
while (linha1.length > 20) {
linhas.add(linha1.substring(0, 20));
linha1 = linha1.substring(20);
}
linhas.add(linha1);
talvez tenha que colocar 21 em algum desses caras, mas eh isso
eh soh q tiver mais de uma pra dividi saca… ai nao vai da…
Olá, acho que para o que você precisa apenas o substring já resolve o problema. Mas em todo caso dê uma olhada na biblioteca da Apache - The Lang component: http://commons.apache.org/lang/
Dê uma estudada nos métodos estáticos da classe StringUtils.Tem uma classe interessante chamada StringW da biblioteca Taglibs da Apache também.
Há um método estático dessa classe StringW chamado wordWrap. Veja mais ou menos um código:
import org.apache.taglibs.string.util.StringW; public class Teste { public static void main(String[] args) { String str= "1a1 b 1c1d1e1f1g1h1i1j1k1l1m1n1o"; String listaStr = StringW.wordWrap(str, 20); System.out.println(listaStr); } }
mais esse método vai dividir a cada 20 linhas, ou soh naso primeiras 20?
Olá a todos,
Caso alguém ainda precise deste exemplo, vou deixando minha contribuição.
public class Main {
public static void main(String[] args) {
String stringASerDividida = "12345678901234567890123";
int dividirACada = 10;
String stringFinal = "";
if (stringASerDividida.length() <= dividirACada) {
stringFinal = stringASerDividida;
} else {
for (int i = 0; i < stringASerDividida.length(); i += dividirACada) {
String subString = "";
if (stringASerDividida.substring(i).length() < dividirACada) {
subString = stringASerDividida.substring(i,
stringASerDividida.substring(i).length() + i);
} else {
subString = stringASerDividida.substring(i, i
+ dividirACada);
}
stringFinal += subString + " ";
}
}
System.out.println(stringFinal);
}
}
ArrayList<String> result = new ArrayList<String>();
String value = "abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz";
if(value.length() < 20) {
result.add(value);
}
else {
String regex = ".{20}";
Pattern replace = Pattern.compile(regex);
Matcher matcher = replace.matcher(value);
while(matcher.find()) {
result.add(matcher.group());
}
result.add(value.substring((value.length()/20 * 20), value.length()));
}
System.out.println(result);
O único problema com esse regex é que ele não retorna se a string não tiver menos que 20 caracteres e não retorna se o
último grupo de caracteres forem menor do que 20. Por essa razão eu coloquei
if(value.length() < 20) {
result.add(value);
}
e para retornar o último grupo
result.add(value.substring((value.length()/20 * 20), value.length()));
Eu não sou mestre em regex, se alguém conhecer uma solução mais elegante, por favor nos mostre.
Olá a todos,
Caso alguém ainda precise deste exemplo, vou deixando minha contribuição.
Por favor, Sandro, evite ressuscitar tópicos muito antigos.