Kotlin-如何将字符串连接为Int值?

时间:2019-05-31 06:54:32

标签: kotlin kotlin-android-extensions

一个非常基本的问题,将String连接到Int的正确方法是什么?

我是Kotlin的新手,想在String之前打印一个Integer值并得到以下错误消息。

for (i in 15 downTo 10){
  print(i + " "); //error: None of the following function can be called with the argument supplied:
  print(i); //It's Working but I need some space after the integer value.
}

预期结果 15 14 13 12 11 10

7 个答案:

答案 0 :(得分:2)

$美元-我们将在接下来看到的字符串模板中使用美元符号

for (i in 15 downTo 10){   
  print("$i ")
}

输出:15 14 13 12 11 10

答案 1 :(得分:2)

您有几种选择:

1。字符串模板。我认为这是最好的。它的工作原理完全类似于第二种解决方案,但是看起来更好,并且可以添加一些所需的字符。

print("$i")

,如果您想添加一些内容

print("$i ")
print("$i - is good")

添加一些表达式放在括号中

print("${i + 1} - is better")

2。 toString方法,可用于kotlin中的任何对象。

print(i.toString())

3。类似于Java的解决方案,具有串联功能

print("" + i)

答案 2 :(得分:1)

Int::toString方法可满足您的需求。代替显式循环,可以考虑使用map之类的功能方法:

(15 downTo 10).map(Int::toString).joinToString { " " }

请注意,map部分甚至是多余的,因为joinToString可以在内部处理转换。

答案 3 :(得分:1)

您得到的错误是因为您使用的+是整数1(由左操作数决定)。整数+需要2个整数。为了实际使用String的+进行连接,您需要像"" + i + " "这样的左侧字符串。

话虽这么说,在Kotlin中使用字符串模板"$i "

打印格式化的字符串更为习惯

但是,如果您只需要打印之间有空格的整数,则可以使用stdlib函数joinToString()

val output = (15 downTo 10).joinToString(" ")
print(output) // or println() if you want to start a new line after your integers

答案 4 :(得分:0)

只需转换为字符串:

SQL Error [42P01]: ERROR: relation "q" does not exist¶  Detail: There is a WITH item named "q", but it cannot be referenced from this part of the query.¶  Hint: Use WITH RECURSIVE, or re-order the WITH items to remove forward references.¶  Position: 269

答案 5 :(得分:0)

您可以为此使用kotlin字符串模板:

for (i in 15 downTo 10){
  print("$i ");
}

https://kotlinlang.org/docs/reference/basic-types.html#string-templates

答案 6 :(得分:0)

您应该使用$。您也可以使用+,但由于+具有也是一个运算符,该运算符会调用用于对整数求和的plus()方法,因此您可能会感到困惑。

for (i in 15 downTo 10){
  print("$i ");
}