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

Rub*_*bic 9 string scala string-concatenation

我有以下代码,基于输入(args)我想创建一个字符串,但答案是不正确的.我有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 ...
Run Code Online (Sandbox Code Playgroud)

输出是空白的!我使用此链接作为参考.你能帮我解决这个问题吗?我是Scala的新手.谢谢.

Kar*_*arl 13

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 ...
Run Code Online (Sandbox Code Playgroud)

更高效的解决方案是使用StringBuilder.

val Statement = StringBuilder.newBuilder

Statement.append(...)

println(Statement.toString)
Run Code Online (Sandbox Code Playgroud)