java - 存储字符串缓冲区

标签 java

我的类中有一个 StringBuffer,如果 IF 语句中的条件满足,它会删除某些字符并打印该语句。然而,这可以重复多次。如果满足第二个条件,则第一个语句将打印出来,而不删除被删除的字符。

有办法解决这个问题吗?下面是我的代码。

    if (status == 1 && item == item1[1]){
        item1[1] = "*"; 
        w = sb1.append(item1[1]+"["+item2[1]+"] ");
        sb1.delete(1,4);
    }else if (status == 1 && item == item1[2]){
        item1[2] = "*";
        x = sb1.append(item1[2]+"["+item2[2]+"] ");
        sb1.delete(1,4);
    }else if(status == 1 && item == item1[3]){
        item1[3] = "*";
        y = sb1.append(item1[3]+"["+item2[3]+"] ");
        sb1.delete(1,4);   
    }  
    return w.toString()+x.toString()+y.toString()+z.toString();
<小时/>

我想要实现的目标如下: 我有一个 toString 它由以下部分组成:

项目1[1]+"["项目2[1]"]"+项目1[2]+"["+项目2[2]+"]"

我想这样做:

如果 item1 被标记为已采取,则会将其更改为“*”并删除 item2[1] 及其周围的 [ ],然后将其返回为:

     eg: item1[2] = x 
         item2[2] = 1


    * x[1]

( * used to be item1[1] )

但是如果循环再次通过,我当前的类会执行以下操作: *[] *[1] 我希望它是: ** 当循环完成时

最佳答案

一个常见问题:item 看起来像一个 Stringitem[] 看起来像一个 String[]不要对字符串使用==,它偶尔会产生意想不到的结果。使用 equals() 代替:

if (status == 1 && item.equals(item1[1])) {

也可以将此模式用于其他条件检查。

(并为 item == null 添加一个测试/处理程序,这现在是必要的)

<小时/>

另一项改进:将 StringBuffer 替换为 StringBuilder,并且在将字符串传递到追加时不要连接字符串。不是为了纠正错误,而是为了提供更好的性能:

 w = sb1.append(item1[1]).append("[").append(item2[1]).append("] ");

关于java - 存储字符串缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5820387/

相关文章:

java - 为什么 eclipse 不警告使用较新 java 版本中的类?

java - 解析 JSON 抛出异常

java - -sourcepath 与 -classpath

java - 备份 derby 数据库但排除表

java - 手动将审计条目添加到 Hibernate Envers

java - mxGraph通过id获取顶点

java - 如何在Azure应用程序日志中记录Java/Spring Boot应用程序生成的自定义应用程序日志?

java - Alfresco 用于财务数据(表格和数据列表)

Java 正则表达式,如何在点、空格上拆分并将引用的单词保持在一起

java - MaterialDrawer 设置选定的配置文件