如何在Scala中进行字符串拼接

13

我有下面的代码,根据输入(参数),我想创建一个字符串,但答案是不正确的。我的args(0)是一个路径,args(1)是一个操作符比如“+”,args(2)是一个数字(我希望在它们之间放置空格):

 //some code ..
 var Statement=""
 for (j<-0 to 2)
    {
         if (Files.exists(Paths.get(args(j)))){
            Statement.concat(inputXml)
            Statement.concat(" ")
            }
         else{
            Statement.concat(args(j))
            Statement.concat(" ")
            }
         println(args(j))
         println(Statement)
    }
    println(Statement)
    //some code ...

输出为空白!我参考了这个链接。您能帮助我吗?我是Scala新手。谢谢。


1
同时,“a.concat(b)”应该写成“a+b”。 - dhg
1个回答

17

String.concat方法返回一个全新的String对象。它不会对您当前的Statement变量做任何改动。现在我不建议您这样做,但从技术上讲,您只需要将Statement重新赋值为所有concat调用的返回值:

 //some code ..
 var Statement=""
 for (j<-0 to 2)
 {
   if (Files.exists(Paths.get(args(j)))){
     Statement = Statement.concat(inputXml)
     Statement = Statement.concat(" ")
   }
   else{
     Statement = Statement.concat(args(j))
     Statement = Statement.concat(" ")
   }
   println(args(j))
   println(Statement)
 }
 println(Statement)
 //some code ...

使用StringBuilder会更加高效。

val Statement = StringBuilder.newBuilder

Statement.append(...)

println(Statement.toString)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接