在我们的项目中,我想传递带有美元符号的字符串。最终结果应如下所示:~ $1300
。但是我只得到~
,其余的都无法打印。通过调试,我发现问题出在美元符号上。如何传递带有美元符号的字符串?转义的美元符号不能解决此问题。
fun setItem() {
bind(valueSubtitle = "~ \$${trx.currencyAmount}")
}
fun bind(valueSubtitle: String? = null) {
val valueSubtitleTextView = findViewById(R.id.txtValueSubtitle)
valueSubtitleTextView.text = valueSubtitle
}
我没有直接打印带有美元符号的字符串的问题。当我尝试将此字符串传递给其他函数时,只有在打印后才出现问题。
更新
我进行了调试,发现我的数字末尾有两个双零:189.00 or 123.00
。这些数字导致问题。其他数字,例如123.40 or 1152.90
正确显示。
更新2
问题出在我的TextView上。当打印不同的双数时,它的表现很奇怪。当我将android:layout_width="match_parent"
更改为android:layout_width="wrap_content"
答案 0 :(得分:1)
模板在原始字符串和转义字符串中均受支持。如果您需要在原始字符串(不支持反斜杠转义)中表示文字 $
字符,则可以使用以下语法:>
itemAmount.bind(valueSubtitle = "~ \${'$'}${trx.currencyAmount}")
看起来语法很差,但可以使用。
答案 1 :(得分:1)
您可以尝试使用文字表示形式。
fun main(args: Array<String>) {
val amount = "25"
val escapedString = "~ ${'$'}$amount"
printString(escapedString)
}
fun printString( str : String) {
println(str)
}
答案 2 :(得分:1)
尝试一下
class MainActivity : AppCompatActivity() {
private val trx: Transaction = Transaction(1300.00)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setItem()
}
fun setItem() {
bind(valueSubtitle = "~ \$${trx.currencyAmount}")
}
fun bind(valueSubtitle: String? = null) {
val valueSubtitleTextView: TextView = findViewById(R.id.textview)
valueSubtitleTextView.text = valueSubtitle
}
class Transaction(var currencyAmount: Double)
}
答案 3 :(得分:1)
您显示的代码没有错。还要注意,您可以使用多种方法来转义美元符号,在您的特定情况下,甚至不需要转义美元符号。只需与以下示例代码进行比较:
data class Container(val amount : Double = 123.00)
fun main() { // used Kotlin 1.3
val trx = Container()
listOf("~ \$${trx.amount}", // your variant
"~ $${trx.amount}", // easier and works too
"""~ $${trx.amount}""", // everything in this string must not be escaped
"~ ${'$'}${trx.amount}", // actually you may only use this if you require something like shown below (e.g. if you want to print something like $none)
"""~ ${"$"}${trx.amount}""", // similar to the one before
// variants to print $none:
"~ \$none",
"~ ${'$'}none",
"""~ ${'$'}none""",
"""~ $${""}none"""
)
.forEach(::println)
}
上面的输出是:
~ $123.0
~ $123.0
~ $123.0
~ $123.0
~ $123.0
~ $none
~ $none
~ $none
~ $none
但是这些答案都不是解决您问题的方法。既然发现自己不是问题,那么代码中的$
就不是问题了...
答案 4 :(得分:0)
这应该有效。
fun main(args: Array<String>) {
val dollar = "~$"
val amount = 1212
println("${dollar}${amount}")
}