stringByAppendingString不返回修改后的字符串

时间:2015-05-08 04:51:03

标签: swift

这就是我在游乐场文件中尝试的内容。我想要的结果是使用println的第二个stringByAppendingString结果。是不是stringByAppendingString应该返回修改后的字符串?我在这里做错了什么?

var reportSummary:String = "Total: \t\t300.00"
reportSummary.stringByAppendingString("Net: \t\t200.00")
println(reportSummary)
// Total:    300.00


var reportSum = "Total: \t300.00\n"
var netSum = "Net: \t\t200.00\n"
var sum = reportSum + netSum
println(sum)
// Total:    300.00
// Net:      200.00

1 个答案:

答案 0 :(得分:1)

stringByAppendingString消息会创建并返回新的String。它不会修改接收器(原始String)。

如果要使用合并的String,则需要对返回值执行某些操作。您发布的代码忽略了返回值。例如,您可以将返回的String存储在reportSummary变量中,如下所示:

var reportSummary:String = "Total: \t\t300.00"
reportSummary = reportSummary.stringByAppendingString("\nnNet: \t\t200.00")
println(reportSummary)

您可以使用+=运算符:

var reportSummary = "Total: \t\t300.00"
reportSummary += "\nNet: \t\t200.00"
println(reportSummary)

或者您可以使用extend方法:

var reportSummary = "Total: \t\t300.00"
reportSummary.extend("\nNet: \t\t200.00")
println(reportSummary)

或者您可以明确使用基础类型NSMutableString

let reportSummary: NSMutableString = "Total: \t\t300.00"
reportSummary.appendString("\nNet: \t\t200.00")
println(reportSummary)