我最近被问到这个问题:String和StringBuilders之间有什么区别?
我知道我已经在某处读过StringBuilders是不可变的,但是不可变的是什么以及StringBuilder上的操作如何变得比String更快,我没有意识到.
请任何人帮我理解这个吗?
可能的重复:
如何清除/清空 Java Stringbuilder
我正在向字符串添加值,然后在文本视图中显示它,但是当我刷新页面时,它不会先清除字符串。
它只是不断地添加它。
有没有办法清除android中的字符串生成器?
到目前为止我尝试过的
StringBuilder sb = new StringBuilder();
sb.delete(0,sb.length());
for (String s : awayScores)
{
sb.append(s);
sb.append("\n");
}
StringBuilder sb2 = new StringBuilder();
sb2.delete(0,sb2.length());
for (String h : homeScores)
{
sb2.append(h);
sb2.append("\n");
}
String awayeve = sb.toString();
String homeeve = sb2.toString();
Log.v("home", "homeeve" + homeeve);
Log.v("home", "awayeve" + awayeve);
Run Code Online (Sandbox Code Playgroud) 我有一个称为数字的整数数组
public String toDecimalString() {
StringBuilder b = new StringBuilder(9 * digits.length);
Formatter f = new Formatter(b);
f.format("%d", digits[0]);
for(int i = 1 ; i < digits.length; i++) {
f.format("%09d", digits[i]);
}
return b.toString();
}
Run Code Online (Sandbox Code Playgroud)
我试过了
String.Format("%09d", digits[i]);
Run Code Online (Sandbox Code Playgroud)
但我想我做错了什么
我需要使用带有数据的节点生成二叉树,左,右.在我的toString()方法中,我使用了字符串构建器和preOrderTraverse方法.
我的toString()不会返回任何内容.任何想法为什么会这样?
private void preOrderTraverse(Node node, int depth, StringBuilder sb) {
for (int i = 1; i < depth; i++) {
sb.append(" ");
}
if (node == null) {
sb.append("null\n");
} else {
sb.append(node.data.toString());
sb.append("\n");
preOrderTraverse(node.left, depth + 1, sb);
preOrderTraverse(node.right, depth + 1, sb);
}
}
public String toString() {
StringBuilder sb = new StringBuilder();
preOrderTraverse(root, 0, sb);
return sb.toString();
}
public static void main(String[] args) {
BRT b = new BRT();
for (int i = 0; i < …Run Code Online (Sandbox Code Playgroud) 我喜欢删除以 ; 结尾的 richtextbox 的最后一行。半柱。我喜欢删除这一行,直到;最后一个半列之前的半列。
例子:
hello do not delete this line;
hello this sentence will continue...
untill here;
Run Code Online (Sandbox Code Playgroud)
结果应该是:
hello do not delete this line;
Run Code Online (Sandbox Code Playgroud)
我的代码:
private void button1_Click_1(object sender, EventArgs e) {
List<string> myList = richTextBox1.Lines.ToList();
if (myList.Count > 0) {
myList.RemoveAt(myList.Count - 1);
richTextBox1.Lines = myList.ToArray();
richTextBox1.Refresh();
}
}
Run Code Online (Sandbox Code Playgroud) 我的要求很简单,获取一个char位置并将其替换为另一个.
唯一的问题是,char它index在运行时出现,不能硬编码.
我实际执行的虚拟代码:
public static void main(String args[])
{
StringBuilder sb = new StringBuilder("just going nuts") ;
System.out.println(" "+sb);
//System.out.println(sb.charAt(4)); //this works
sb.setCharAt(sb.indexOf((sb.charAt(4))), sb.charAt(0)); //line 8 -error line
System.out.println(" "+sb);
}
Run Code Online (Sandbox Code Playgroud)
我甚至试着char用引号括起来:
sb.setCharAt(sb.indexOf(( "\""+sb.charAt(4)+"\"" )), sb.charAt(0));
Run Code Online (Sandbox Code Playgroud)
但仍然是同样的错误
错误
line no:8: cannot find symbol
symbol : method indexOf(char)
location: class java.lang.StringBuilder
sb.setCharAt(sb.indexOf((sb.charAt(4))), sb.charAt(0));
Run Code Online (Sandbox Code Playgroud)
我不是很流利的Java,但找不到setCharAt具有动态值的函数示例,就像在这种情况下!
我有以下格式的 StringBuilder 结果:
[Cat1] 项目 1
[Cat2] Item2
[Cat1] Item12
[Cat1] Item89
[Cat3] Item88
行已使用 StringBuilder 的 AppendLine 方法创建。我想在显示结果之前对结果进行排序:
[Cat1] 项目 1
[Cat1] Item12
[Cat1] Item89
[Cat2] Item2
[Cat3] Item88
最好的方法是什么?
I know that "printf" method can use string formatting.
My question is : Is there a way to create a nice looking table with StringBuilder class?
For example:
|Id|Category|Level|Space|Type|Adress|Dimension|Limits|
And under that row, i must add the values of each columns!
Doing something like that : example but with StringBuilder
所以社区希望看到我的答案(我不明白为什么......但无论如何我都会说出来!)
public String toString(){
StringBuilder s = new StringBuilder();
s.append("Category: "+this.category+"\t");
s.append("Level: "+this.level.toString()+"\t");
return s.toString();
}
Run Code Online (Sandbox Code Playgroud)
现在解释一下,为什么看到我的回答会对我有所帮助?我真的很想看看你的答案!
private String generateSuffix(List<String[]> searches, List<String[]> sorts) {
String ret = "";
if (searches != null && !searches.isEmpty()) {
ret += "where ";
for (String[] search : searches) {
if (search.length < 3) {
continue;
}
ret += search[0] + search[1] + search[2] + " and ";
}
ret = ret.substring(0, ret.length() - 5);
}
ret += " order by ";
if (sorts != null && !sorts.isEmpty()) {
for (String[] sort : sorts) {
if (sort.length < 2) {
continue;
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个具有给定长度的 StringBuilder 对象,但每次我尝试这样做时,StringBuilder 对象的长度都会打印为 0。有人知道为什么吗?
String s = "i";
StringBuilder sb = new StringBuilder(s.length()+1);
System.out.println(sb.length());
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,StringBuilder对象的长度应该是2(1从“i”的长度+1),但是当我在Eclipse中打印StringBuilder的长度时,我得到了0。我把长度改为17和100,但我仍然得到 0 assb的长度。