【问题标题】:Java add chars to a stringJava将字符添加到字符串
【发布时间】:2010-12-11 21:23:12
【问题描述】:

我在一个 java 程序中有两个字符串,我想以某种方式混合它们以形成两个新字符串。为此,我必须从每个字符串中提取一些组成字符并将它们添加以形成新字符串。我有这样的代码(this.eka 和 this.toka 是原始字符串):

String muutettu1 = new String();
String muutettu2 = new String();
muutettu1 += this.toka.charAt(0) + this.toka.charAt(1) + this.eka.substring(2);
muutettu2 += this.eka.charAt(0) + this.eka.charAt(1) + this.toka.substring(2);
System.out.println(muutettu1 + " " + muutettu2);

我正在获取 .charAt(x) 部分的数字,那么如何将字符转换为字符串?

【问题讨论】:

  • 很高兴看到一些芬兰代码 ;-)
  • 如您的示例所示,您也可以使用substring 直接返回一个字符串。为什么你在同一个语句中同时使用charAtsubstring

标签: java string char


【解决方案1】:
StringBuilder builder = new StringBuilder();
builder
   .append(this.toka.charAt(0))
   .append(this.toka.charAt(1))
   .append(this.toka.charAt(2))
   .append(' ')  
   .append(this.eka.charAt(0))
   .append(this.eka.charAt(1))
   .append(this.eka.charAt(2));
System.out.println (builder.toString());

【讨论】:

  • 我想,你的结果是错误的。 subString(2) 是以索引 2 开头的字符串。
  • 是的,我错过了。无论如何, append 是一个重载方法,您也可以将它传递给 Strings。这里的重点是不要直接使用 String,而是使用 StringBuilder(如果在旧 JRE 上使用 StringBuffer)来最小化性能成本。
  • a + b 无论如何都会被编译成 new StringBuilder().append(a).append(b).toString()。
  • 我真的很喜欢这个答案,但为什么不增强 for 循环呢?例如。 for(String i : this.toka) 并为 this.eka 做同样的事情
  • 在这两种变体上尝试 javap。 (我自己没有做过,但是)迭代形式可能会为 2 个控制结构执行多余的分配(可能由编译器展开)。另请注意,OP 的 Q 并未表明源字符串实际上在提供的索引处终止,因此它需要是显式的 for 循环形式。
【解决方案2】:

只需始终使用substring() 而不是charAt()


在这种特殊情况下,值是可变的,因此,我们可以使用内置的 String 类方法 substring() 来解决这个问题(@see 下面的例子):

特定于 OP 用例的示例:

    muutettu1 += toka.substring(0,1) + toka.substring(1,2) + eka.substring(2);
   
    muutettu2 += eka.substring(0,1) + eka.substring(1,2) + toka.substring(2);


概念示例,(即示例显示在尝试使用此概念解决问题时应采用的一般方法)

    muutettu1 += toka.substring(x,x+1) + toka.substring(y,y+1) + eka.substring(z);

    muutettu2 += eka.substring(x,x+1) + eka.substring(y,y+1) + toka.substring(z);

"...其中 x,y,z 是保存要提取的位置的变量。"

【讨论】:

    【解决方案3】:

    明显的转换方法是Character.toString

    更好的解决方案是:

    String muutettu1 = toka.substring(0,2) + eka.substring(2);
    String muutettu2 = eka.substring(0,2) + toka.substring(2);
    

    您应该为此操作创建一个方法,因为它是多余的。

    字符串对象实例化new String() 是不必要的。当您将某些内容附加到空字符串时,结果将是附加的内容。

    【讨论】:

      【解决方案4】:

      您还可以通过两种方式将整数转换为字符串表示形式:1) String.valueOf(a) 用 a 表示整数 2) Integer.toString(a)

      【讨论】:

        【解决方案5】:

        这个东西可以在字符串的末尾添加一个字符

        StringBuilder strBind = new StringBuilder("Abcd");
        strBind.append('E');
        System.out.println("string = " + str);
        //Output => AbcdE
        str.append('f');
        //Output => AbcdEf
        

        【讨论】:

        • 这是什么? str 来自哪里?你到底在做什么?
        • 这是什么?你甚至没有声明 str 是什么!
        • 你用 JavaScript 回答了这个问题,哈哈。这是一个引用 JAVA 的问题,这是一种完全不同的语言。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-10
        • 2014-08-03
        相关资源
        最近更新 更多