답변:
나는 이것이 당신을 도울 수 있다고 생각합니다.
let timeNow = time(nil)
let aStr = String(format: "%@%x", "timeNow in hex: ", timeNow)
print(aStr)
결과 예 :
timeNow in hex: 5cdc9c8d
NSString
있는 Foundation
프레임 워크 . 따라서 import Foundation
제대로 작동하려면이 작업을 수행해야합니다. 그렇지 않으면 표현식이을 호출 String.init<T>(T)
하고 "(\"%@%x %x\", 10)"
대신 비슷한 것을 생성합니다 .
%@%x
기호는 무엇을 의미합니까? 더 자세히 배울 수있는 자료를 알려 주시겠습니까?
let str = "\(INT_VALUE), \(FLOAT_VALUE), \(DOUBLE_VALUE), \(STRING_VALUE)"
업데이트 : Swift가 String(format:)
API에 추가 하기 전에이 답변을 썼습니다 . 최고 답변에서 제공 한 방법을 사용하십시오 .
String(format:arguments:)
더 적합 할 것입니다 것은 포맷 추가
-stringWithFormat:
형식을 지정할 수 있습니다. 스위프트에서는 String(format:arguments:)
Obj-C의 스위프트 버전이 될 것입니다-stringWithFormat:
NSString
메소드가 아직 구현되지 않은 Swift의 첫 번째 릴리스 중이었습니다 String
.
나는 둘 다 주장
let str = String(format:"%d, %f, %ld", INT_VALUE, FLOAT_VALUE, DOUBLE_VALUE)
과
let str = "\(INT_VALUE), \(FLOAT_VALUE), \(DOUBLE_VALUE)"
사용자가 형식에 대해 물었으므로 두 가지 경우 모두 허용되며 두 경우 모두 요구 사항에 적합합니다.
int, long, double 등의 유형을 문자열로 변환 할 수있는 형식의 문자열을 만들어야합니다.
분명히 전자는 후자보다 형식을 더 세밀하게 제어 할 수 있지만 후자가 허용되는 대답이 아니라는 것을 의미하지는 않습니다.
먼저 Swift 언어 공식 문서를 읽으십시오 .
대답은
var str = "\(INT_VALUE) , \(FLOAT_VALUE) , \(DOUBLE_VALUE), \(STRING_VALUE)"
println(str)
여기
1) 기본적으로 모든 부동 소수점 값 double
EX.
var myVal = 5.2 // its double by default;
-> 부동 소수점 값을 표시하려면 다음과 같이 명시 적으로 정의해야합니다
EX.
var myVal:Float = 5.2 // now its float value;
이것은 훨씬 더 분명하다.
let INT_VALUE=80
let FLOAT_VALUE:Double= 80.9999
let doubleValue=65.0
let DOUBLE_VALUE:Double= 65.56
let STRING_VALUE="Hello"
let str = NSString(format:"%d , %f, %ld, %@", INT_VALUE, FLOAT_VALUE, DOUBLE_VALUE, STRING_VALUE);
println(str);
나는이 출판 이후 많은 시간이 지났다는 것을 알고 있지만, 비슷한 상황에 빠졌고 내 인생을 단순화하기 위해 간단한 수업을 만들었습니다.
public struct StringMaskFormatter {
public var pattern : String = ""
public var replecementChar : Character = "*"
public var allowNumbers : Bool = true
public var allowText : Bool = false
public init(pattern:String, replecementChar:Character="*", allowNumbers:Bool=true, allowText:Bool=true)
{
self.pattern = pattern
self.replecementChar = replecementChar
self.allowNumbers = allowNumbers
self.allowText = allowText
}
private func prepareString(string:String) -> String {
var charSet : NSCharacterSet!
if allowText && allowNumbers {
charSet = NSCharacterSet.alphanumericCharacterSet().invertedSet
}
else if allowText {
charSet = NSCharacterSet.letterCharacterSet().invertedSet
}
else if allowNumbers {
charSet = NSCharacterSet.decimalDigitCharacterSet().invertedSet
}
let result = string.componentsSeparatedByCharactersInSet(charSet)
return result.joinWithSeparator("")
}
public func createFormattedStringFrom(text:String) -> String
{
var resultString = ""
if text.characters.count > 0 && pattern.characters.count > 0
{
var finalText = ""
var stop = false
let tempString = prepareString(text)
var formatIndex = pattern.startIndex
var tempIndex = tempString.startIndex
while !stop
{
let formattingPatternRange = formatIndex ..< formatIndex.advancedBy(1)
if pattern.substringWithRange(formattingPatternRange) != String(replecementChar) {
finalText = finalText.stringByAppendingString(pattern.substringWithRange(formattingPatternRange))
}
else if tempString.characters.count > 0 {
let pureStringRange = tempIndex ..< tempIndex.advancedBy(1)
finalText = finalText.stringByAppendingString(tempString.substringWithRange(pureStringRange))
tempIndex = tempIndex.advancedBy(1)
}
formatIndex = formatIndex.advancedBy(1)
if formatIndex >= pattern.endIndex || tempIndex >= tempString.endIndex {
stop = true
}
resultString = finalText
}
}
return resultString
}
}
다음 링크는 완전한 소스 코드로 전송됩니다 : https://gist.github.com/dedeexe/d9a43894081317e7c418b96d1d081b25
이 솔루션은이 기사를 기반으로합니다 : http://vojtastavik.com/2015/03/29/real-time-formatting-in-uitextfield-swift-basics/
Foundation을 가져올 수없고 round ()을 사용 하거나 String을 원하지 않는 경우 "We <3 Swift"를 사용하여 얻은 간단한 솔루션이 있습니다 .
var number = 31.726354765
var intNumber = Int(number * 1000.0)
var roundedNumber = Double(intNumber) / 1000.0
결과 : 31.726
시도 성공 :
var letters:NSString = "abcdefghijkl"
var strRendom = NSMutableString.stringWithCapacity(strlength)
for var i=0; i<strlength; i++ {
let rndString = Int(arc4random() % 12)
//let strlk = NSString(format: <#NSString#>, <#CVarArg[]#>)
let strlk = NSString(format: "%c", letters.characterAtIndex(rndString))
strRendom.appendString(String(strlk))
}