Hallo Leute,
kennt Ihr eine schlaue Bibliothek für Strings, die mir ermöglichen würde, ein string in n-große Strings zu teilen und dabei den String früher zu brechen, wenn da ein Leerzeichne vorgekommen ist.
So sieht es bei mir aus, aber vielleicht gibt es da Fehler die ich nicht sehe, bzw. ich das Rad neu erfunden habe... Oder vielleicht kann man das einfacher/perfomanter machen? Habt Ihr Ideen?
und die Testklasse dazu:
Her mit Ideen
Danke und Gruß,
madlena
kennt Ihr eine schlaue Bibliothek für Strings, die mir ermöglichen würde, ein string in n-große Strings zu teilen und dabei den String früher zu brechen, wenn da ein Leerzeichne vorgekommen ist.
So sieht es bei mir aus, aber vielleicht gibt es da Fehler die ich nicht sehe, bzw. ich das Rad neu erfunden habe... Oder vielleicht kann man das einfacher/perfomanter machen? Habt Ihr Ideen?
Java:
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;
public class StringUtils
{
private final static Logger LOGGER = Logger.getLogger(StringUtils.class .getName());
public static List<String> getSubStrings(String text, int n)
{
List<String> list = new ArrayList<String>();
String s = new String(text);
while(s.length() != 0)
{
s = s.trim();
int end = n < s.length() ? n : s.length();
String sub = s.substring(0, end);
int nextIndex = end;
int lastIndexOfSpace = sub.lastIndexOf(" "); // index of space character
if(lastIndexOfSpace > 0)
{
end = lastIndexOfSpace;
sub = s.substring(0, end);
nextIndex = end + 1;
}
list.add(sub);
s = s.substring(nextIndex);
}
LOGGER.info(text);
LOGGER.info(list.toString());
return list;
}
}
und die Testklasse dazu:
Java:
import static org.junit.Assert.*;
import java.util.List;
import org.junit.Test;
public class SimpleTestCase
{
@Test
public void test()
{
String text = "lalalla lalall ll lalal lallalhzh";
int n = 5;
List<String> list = StringUtils.getSubStrings(text, n);
assertEquals(7, list.size());
}
}
Her mit Ideen
Danke und Gruß,
madlena