Разбить строку на массив лексем используя StringBuffer
Не используя StringTokenizer, разбить строку типа StringBuffer на массив лексем. Целый день что-то пытаюсь, да не выходит.
Источник: Stack Overflow на русском
Не используя StringTokenizer, разбить строку типа StringBuffer на массив лексем. Целый день что-то пытаюсь, да не выходит.
StringBuffer
, если посмотреть на исходники, хранит свой буфер в виде массива char[]
, а не в виде какого-то массива/списка исходных кусков полученных после append()
, так что разбиение StringBuffer
на лексемы ничем принципиально не отличается от разбиения строки String
на лексемы.
А здесь выбор также достаточно ограничен: или использовать ваш нелюбимый StringTokenizer
или split()
или самому написать нечто вроде парсерчика (код не проверял - просто написал на коленках):
String s=myStringBuffer.toString(); //исходная строка
int start=0, end;
ArrayList<String> lexems=new ArrayList<String>; //складываем лексемы сюда
String separator=" "; //ваш разделитель - может быть любым
do {
end=s.indexOf(separator, start);
if(end >= 0) {
lexems.add(s.substring(start, end);
start=end+separator.length();
}
else
lexems.add(s.substring(start));
} while(end >= 0);
Попробуйте это
StringBuffer s = new StringBuffer("asd zxc 123 sdf");
String[] a = s.toString().split(" ")
Немного не в тему вопроса, но как альтернативу можете использовать Google Guava, тогда все проще:
List<String> res = Splitter.on(CharMatcher.BREAKING_WHITESPACE).splitToList("asd zxc 123 sdf");