Я намагаюся працювати, як кинути Int
в String
в Swift.
Я розгадую рішення, використовуючи, NSNumber
але я хотів би розібратися, як це зробити у Swift.
let x : Int = 45
let xNSNumber = x as NSNumber
let xString : String = xNSNumber.stringValue
Я намагаюся працювати, як кинути Int
в String
в Swift.
Я розгадую рішення, використовуючи, NSNumber
але я хотів би розібратися, як це зробити у Swift.
let x : Int = 45
let xNSNumber = x as NSNumber
let xString : String = xNSNumber.stringValue
Відповіді:
Перехід Int
до String
:
let x : Int = 42
var myString = String(x)
І навпаки - перетворення String
на Int
:
let myString : String = "42"
let x: Int? = myString.toInt()
if (x != nil) {
// Successfully converted String to Int
}
Або якщо ви використовуєте Swift 2 або 3:
let x: Int? = Int(myString)
Int
не здається, що toString()
метод має, принаймні, не в Xcode 6.2 edit: я бачу, що існує глобальний toString
метод ( немає Int.toString()
), хтось знає перевагу перед використанням String()
конструктора?
String(Int?)
написано "Необов’язково (Int)", принаймні у Swift 2, це не могло бути тим, що ви мали на увазі. Використовуйте замість цьогоInt?.description
String(describing: x)
Перевірте нижче відповідь:
let x : Int = 45
var stringValue = "\(x)"
print(stringValue)
String
конструктор вже приймаєInt
String
є конструктор, який приймає Int
. Його набагато чіткіше і стисліше.
Ось 4 методи:
var x = 34
var s = String(x)
var ss = "\(x)"
var sss = toString(x)
var ssss = x.description
Я можу собі уявити, що у деяких людей виникне проблема із сс. Але якщо ви хотіли створити рядок, що містить інший вміст, то чому б ні.
var ss = "\(x)"
приклад - саме те, як вони радили перетворити дубль у рядок. Який я вважав легким та чудовим.
String(describing:)
ніколи не слід використовувати ні для чого іншого, ніж налагодження. Це не звичайний ініціалізатор String.
У Swift 3.0 :
var value: Int = 10
var string = String(describing: value)
String(describing:)
ніколи не слід використовувати ні для чого іншого, ніж налагодження. Це не звичайний ініціалізатор String.
Швидкий 4 :
let x:Int = 45
let str:String = String(describing: x)
Developer.Apple.com> Рядок> init (описує :)
Строковий (описуючи :) ініціалізатор :) є кращим способом перетворення екземпляра будь-якого типу в рядок.
String(describing:)
ніколи не слід використовувати ні для чого іншого, ніж налагодження. Це не звичайний ініціалізатор String.
describing
Метод тут , щоб ... описати його зміст. Це дає опис. Іноді це те саме, що перетворення, іноді ні . Надайте необов'язково, describing
і ви побачите результат ... Це не буде конверсією. Існує простий, виділений спосіб перетворення: використання звичайного ініціалізатора String, як пояснено в інших відповідях. Прочитайте повну сторінку, на яку ви посилаєтесь: перегляньте, що цей метод шукає описи різними способами, деякі з яких дадуть неправильні результати, якщо ви очікуєте точної конверсії ..
Для повноти ви також можете використовувати:
let x = 10.description
або будь-яке інше значення, яке підтримує опис.
Швидкий 4:
Намагання показати значення в мітці без необов’язкового () слова.
тут x - значення Int.
let str:String = String(x ?? 0)
String(describing:)
Ніколи не слід використовувати ні для чого іншого, ніж налагодження. Це не звичайний ініціалізатор String.
String()
ініціалізатор. Але не давайте це додатково, розгортайте спочатку. Або, як у вашому прикладі, використовувати ??
. Ось так:let str = String(x ?? 0)
Щоб заощадити собі час і клопоти в майбутньому, ви можете зробити розширення Int. Зазвичай я створюю спільний файл коду, куди розміщую розширення, перерахунки та інші цікаві речі. Ось як виглядає код розширення:
extension Int
{
func toString() -> String
{
var myString = String(self)
return myString
}
}
Потім пізніше, коли ви хочете перетворити int в рядок, ви можете просто зробити щось на кшталт:
var myNumber = 0
var myNumberAsString = myNumber.toString()
toInt
або toInt()
.
myNumber.description
. Не потрібно ніяких розширень.
в swift 3.0 ось так ми можемо перетворитись Int
на String
та String
доInt
//convert Integer to String in Swift 3.0
let theIntegerValue :Int = 123 // this can be var also
let theStringValue :String = String(theIntegerValue)
//convert String to Integere in Swift 3.0
let stringValue : String = "123"
let integerValue : Int = Int(stringValue)!
integerValue
тип Int
. то не може мати нульове значення для нього. тому компілятор каже вам розмотати його. якщо ви хочете цього уникнути, використовуйте його так let integerValue = Int(stringValue)
. тоді у вас не виникне проблеми. Вибачте за пізню відповідь.
Кілька способів зробити це:
var str1:String="\(23)"
var str2:String=String(format:"%d",234)
Швидкий 2:
var num1 = 4
var numString = "56"
var sum2 = String(num1) + numString
var sum3 = Int(numString)
Я використовую цей простий підхід
Рядок до Int:
var a = Int()
var string1 = String("1")
a = string1.toInt()
і від Int до String:
var a = Int()
a = 1
var string1 = String()
string1= "\(a)"
Для тих, хто хоче перетворити Int в рядок Unicode, ви можете зробити наступне:
let myInteger: Int = 97
// convert Int to a valid UnicodeScalar
guard let myUnicodeScalar = UnicodeScalar(myInteger) else {
return ""
}
// convert UnicodeScalar to String
let myString = String(myUnicodeScalar)
// results
print(myString) // a
Або в якості альтернативи:
let myInteger: Int = 97
if let myUnicodeScalar = UnicodeScalar(myInteger) {
let myString = String(myUnicodeScalar)
}
String
Ініціалізатор може зайняти UnicodeScalar
.
Для перетворення String в Int
var numberA = Int("10")
Print(numberA) // It will print 10
Щоб приховати Int у String
var numberA = 10
1-й спосіб)
print("numberA is \(numberA)") // It will print 10
2-й спосіб)
var strSomeNumber = String(numberA)
або
var strSomeNumber = "\(numberA)"
let a =123456888
var str = String(a)
АБО
var str = a as! String
У swift 3.0 ви можете змінити ціле число на рядок, як зазначено нижче
let a:String = String(stringInterpolationSegment: 15)
Інший спосіб
let number: Int = 15
let _numberInStringFormate: String = String(number)
// або будь-яке ціле число замість 15
Я вважаю за краще використовувати строкову інтерполяцію
let x = 45
let string = "\(x)"
Кожен об'єкт має деяке рядкове подання. Це робить речі простішими. Наприклад, якщо вам потрібно створити кілька String
з кількома значеннями. Ви також можете займатися будь-якою математикою в ньому або використовувати деякі умови
let text = "\(count) \(count > 1 ? "items" : "item") in the cart. Sum: $\(sum + shippingPrice)"
let Str = "12"
let num: Int = 0
num = Int (str)
toString
функцію, показану у відповіді нижче.