Concatenate number with string in Swift
StringNsstringSwiftString Problem Overview
I need to concatenate a String
and Int
as below:
let myVariable: Int = 8
return "first " + myVariable
But it does not compile, with the error:
> Binary operator '+' cannot be applied to operands of type 'String' and 'Int'
What is the proper way to concatenate a String + Int?
String Solutions
Solution 1 - String
If you want to put a number inside a string, you can just use String Interpolation:
return "first \(myVariable)"
Solution 2 - String
You have TWO options;
return "first " + String(myVariable)
or
return "first \(myVariable)"
Solution 3 - String
To add an Int to a String you can do:
return "first \(myVariable)"
Solution 4 - String
If you're doing a lot of it, consider an operator to make it more readable:
func concat<T1, T2>(a: T1, b: T2) -> String {
return "\(a)" + "\(b)"
}
let c = concat("Horse ", "cart") // "Horse cart"
let d = concat("Horse ", 17) // "Horse 17"
let e = concat(19.2345, " horses") // "19.2345 horses"
let f = concat([1, 2, 4], " horses") // "[1, 2, 4] horses"
operator infix +++ {}
@infix func +++ <T1, T2>(a: T1, b: T2) -> String {
return concat(a, b)
}
let c1 = "Horse " +++ "cart"
let d1 = "Horse " +++ 17
let e1 = 19.2345 +++ " horses"
let f1 = [1, 2, 4] +++ " horses"
You can, of course, use any valid infix operator, not just +++
.
Solution 5 - String
Optional
keyword would appear when you have marked variable as optional with !
during declaration.
To avoid Optional keyword in the print output, you have two options:
- Mark the optional variable as non-optional. For this, you will have to give default value.
- Use force unwrap
(!)
symbol, next to variable
In your case, this would work just fine
return "first \(myVariable!)"
Solution 6 - String
var a = 2
var b = "Hello W"
print("\(a) " + b)
will print 2 Hello W
Solution 7 - String
Here is documentation about String and characters
var variableString = "Horse"
variableString += " and carriage"
// variableString is now "Horse and carriage"