2010-08-11 84 views
-1

尝试在Java String API中搜索而没有答案。Java String;能够分配给定大小的字符串的大小?

我正在尝试创建具有指定大小的Java字符串。我注意到Java字符串不以空字符(\ 0)结尾。基本上,我想能够创建的字符串,如:

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

myString的地方将包含"Charles <-- 24 spaces --> \0"

没有可以实现上面我所没有这样的方法。我应该只依靠创建自己的功能来做到这一点吗?

谢谢

+1

''''''''''后面''''不需要'[]',尽管您可以像'String'一样使用'char []'(仍然不需要NUL终止符)。 – 2010-08-11 17:38:59

+0

上面的Java代码声明了一个字符串数组,但将它指定为一个字符串作为其值。你应该编辑这个例子来澄清你的问题。 – ChrisH 2010-08-11 17:39:53

+0

您发布的代码不会编译,因为您将'myString'声明为String的一个*数组*,但是您将一个'String'对象分配给它。 – Jesper 2010-08-11 17:41:08

回答

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

不错的解决方案。没有想到这种可能性。 – 2010-08-11 17:45:38

+0

什么是“s”的说法? – 2010-08-11 17:47:16

+0

@Carlo - 空的安全性,如果“Charles”被替换为null,它将打印null这个词,而不是给出一个空指针异常 – Adam 2010-08-11 17:51:47

0

是的,那里可能没有内置函数。您可以使用String.format()将字符串填充到所需的长度,然后在它的末尾附加一个\ 0,这应该可以很轻松地完成您想要的操作。

2

Java中的字符串是不可变的。如果你最后需要这些额外的空格,你只需要创建一个包含这些空格的字符串。

0

如果你希望能够在一个可变的方式固定大小字符串的工作,你也可以写你自己的包装,它封装了一个预先筛分的char [],例如

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对其进行初始化。然后,在写入/修改文本时,您可以拨动字符位置。