Как лучше всего преобразовать StringBuilder в String ?

Следующий тип кода работает, но фиксирует количество элементов в String []. Есть ли способ сделать String [] добавить число элементов, необходимых динамически?

private static StringBuilder names = new StringBuilder(); ... public String[] getNames() { int start = 0; int end = 0; int i = 0; String[] nameArray = {"","","",""}; while (-1 != end) { end = names.indexOf(TAB, start); nameArray[i++] = names.substring(start, end); start = ++end; // The next name is after the TAB } return nameArray; } 

Solutions Collecting From Web of "Как лучше всего преобразовать StringBuilder в String ?"

Итак, вы просто пытаетесь разделить на вкладке? Как насчет:

 return names.toString().split(TAB); 

Обратите внимание, что split принимает шаблон регулярного выражения – так что не ожидайте, что split(".") Будет разбиваться только на точки, например 🙂

Чтобы динамически вырастить массив, используйте ArrayList<String> , вы даже можете преобразовать результат в String[] если этого требует ваш API.

 ArrayList<String> namesList = new ArrayList<String>( ); while (-1 != end) { end = names.indexOf(TAB, start); namesList.add( names.substring(start, end) ); start = ++end; // The next name is after the TAB } return namesList.toArray( new String[ namesList.size( ) ] ); 

Тем не менее, для ваших целей используйте split как это было предложено другими

Вы можете использовать метод String, чтобы сделать это в одной строке.

Вы можете использовать рекурсивную реализацию для использования стека программ в качестве временного массива.

 public String[] getNames() { return getNamesRecursively( names, 0, TAB, 0 ); } private static String[] getNamesRecursively( StringBuilder str, int pos, String delimiter, int cnt ) { int end = str.indexOf( delimiter, pos ); String[] res; if( end >= 0 ) res = getNamesRecursively( str, end + delimiter.length(), delimiter, cnt + 1 ); else { res = new String[ cnt + 1 ]; end = str.length(); } res[ cnt ] = str.substring( pos, end ); return res; } 

String myLocation = builder.toString ();

 StringBuilder t= new StringBuilder(); String s= t.toString();