web-dev-qa-db-ja.com

フォーマット付きの文字列を作成する方法?

Int、long、doubleなどの型を文字列に変換できる形式の文字列を作成する必要があります。 Obj-Cを使用して、私は以下の方法でそれをすることができます。

NSString *str = [NSString stringWithFormat:@"%d , %f, %ld, %@", INT_VALUE, FLOAT_VALUE, DOUBLE_VALUE, STRING_VALUE];

迅速で同じことをするには?

162
Apurv

私はこれがあなたを助けることができると思います:

let timeNow = time(nil)
let aStr = String(format: "%@%x", "timeNow in hex: ", timeNow)
print(aStr)

結果の例:

timeNow in hex: 5cdc9c8d
351
realityone

特にない

let str = NSString(format:"%d , %f, %ld, %@", INT_VALUE, FLOAT_VALUE, LONG_VALUE, STRING_VALUE)
70
Bryan Chen
let str = "\(INT_VALUE), \(FLOAT_VALUE), \(DOUBLE_VALUE), \(STRING_VALUE)"

更新:SwiftがString(format:)をAPIに追加する前にこの回答を書きました。 上の答え で与えられた方法を使ってください。

38
John Estropia

NSStringは必要ありません。

String(format: "Value: %3.2f\tResult: %3.2f", arguments: [2.7, 99.8])

または

String(format:"Value: %3.2f\tResult: %3.2f", 2.7, 99.8)
33
Durul Dalkanat

私はその両方を主張するでしょう

let str = String(format:"%d, %f, %ld", INT_VALUE, FLOAT_VALUE, DOUBLE_VALUE)

そして

let str = "\(INT_VALUE), \(FLOAT_VALUE), \(DOUBLE_VALUE)"

ユーザーがフォーマットについて尋ねたので両方とも許容可能であり、どちらの場合も彼らが求めているものに適合します。

Int、long、doubleなどの型を文字列に変換できる形式の文字列を作成する必要があります。

明らかに前者は後者よりもフォーマットを細かく制御できますが、それは後者が許容できる答えではないという意味ではありません。

13
Lance Clark
var str = "\(INT_VALUE) , \(FLOAT_VALUE) , \(DOUBLE_VALUE), \(STRING_VALUE)"
5
Apple

最初に読む 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;

これはもっと明確です。

5
iPatel

この出版以来、多くの時間が経過したことを私は知っていますが、私は同じような状況に陥り、私の人生を簡素化するためにsimplesクラスを作成しました。

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/

2
dede.exe
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);
2
Awais Chatha

あなたが import Foundation を使用できない、または round() を使用できない、または String を使用したくない場合、私は "We <3 Swift"で学んだ簡単な解決策があります。

var number = 31.726354765
var intNumber = Int(number * 1000.0)
var roundedNumber = Double(intNumber) / 1000.0

結果:31.726

1

次のコードを使用してください。

    let intVal=56
    let floatval:Double=56.897898
    let doubleValue=89.0
    let explicitDaouble:Double=89.56
    let stringValue:"Hello"

    let stringValue="String:\(stringValue) Integer:\(intVal) Float:\(floatval) Double:\(doubleValue) ExplicitDouble:\(explicitDaouble) "
0
PREMKUMAR