2010-08-11 2 views
-1

Пробовал поиск в Java String API без ответа.Java String; Способна выделить размер строки при заданном размере?

Я пытаюсь создать строки Java с указанным размером. Я заметил, что строки Java не заканчиваются нулевым символом (\ 0). В принципе, я хотел бы иметь возможность создавать такие строки, как:

String myString = new String("Charles", 32); 

где туЗЬптд будет содержать "Charles <-- 24 spaces --> \0"

Там нет такого метода, который может достичь того, что я выше. Должен ли я просто полагаться на создание моей собственной функции?

Благодаря

+1

Нет необходимости в '[]' после 'String', хотя вы можете использовать' char [] 'аналогично' String' (до сих пор не требуется терминатор NUL). –

+0

Вышеупомянутый Java-код объявляет массив строк, но присваивает ему одну строку в качестве значения. Вероятно, вы должны изменить этот пример, чтобы уточнить свой вопрос. – ChrisH

+0

Код, который вы отправили, не будет компилироваться, потому что вы объявили 'myString' как * массив *' String', но тогда вы назначаете для него один объект String. – Jesper

ответ

4
String myString = String.format("%1$-" + 32 + "s", "Charles"); 
+0

Хорошее решение. Не думал об этой возможности. –

+0

Что такое аргумент «s»? –

+0

@ Карло - Нулевая безопасность, если «Чарльз» был заменен нулевым, он будет печатать слово «null» вместо того, чтобы давать исключение Null Pointer Exception – Adam

0

Да, там, вероятно, не является встроенной функцией для этого. Вы можете наложить строку на нужную длину, используя String.format(), а затем добавить \ 0 до конца - это должно делать то, что вы хотите довольно легко.

2

Строки в Java неизменяемы. Если вам нужны эти дополнительные пробелы в конце, вам просто нужно создать строку, содержащую эти пробелы.

0

Если вы хотите, чтобы иметь возможность работать со строками фиксированного размера в изменяемом образом, вы также можете написать свою собственную обертку, который инкапсулирует presized символ [], например,

public class MyString() 
private char[] values; 

public MyString(int size) 
{ 
    values=new char[size]; 
} 

... methods to set, get 

public String toString() { return new String(values);} 
} 
0

Я бы выбрал один из вариантов форматирования, предоставляемых Java для этого.

Например, реализовать свою собственную реализацию java.text.Format.

Другой возможностью было бы использовать StringBuffer/StringBuilder с указанной емкостью и инициализировать его пробелами и \ 0. Затем вы можете возиться с позициями char при записи/изменении текста.

Смежные вопросы