How to create a string with format?

后端 未结 12 1317
别跟我提以往
别跟我提以往 2020-11-30 18:13

I need to create a string with format which can convert int, long, double etc. types into string. Using Obj-C, I can do it via below way.

NSString *str = [NS         


        
相关标签:
12条回答
  • 2020-11-30 19:06
    var str = "\(INT_VALUE) , \(FLOAT_VALUE) , \(DOUBLE_VALUE), \(STRING_VALUE)"
    
    0 讨论(0)
  • 2020-11-30 19:07

    Use this following code:

        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 讨论(0)
  • 2020-11-30 19:08
    let str = "\(INT_VALUE), \(FLOAT_VALUE), \(DOUBLE_VALUE), \(STRING_VALUE)"
    

    Update: I wrote this answer before Swift had String(format:) added to it's API. Use the method given by the top answer.

    0 讨论(0)
  • 2020-11-30 19:09

    No NSString required!

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

    or

    String(format:"Value: %3.2f\tResult: %3.2f", 2.7, 99.8)
    
    0 讨论(0)
  • 2020-11-30 19:12

    I think this could help you:

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

    Example result:

    timeNow in hex: 5cdc9c8d
    
    0 讨论(0)
  • 2020-11-30 19:14

    I know a lot's of time has passed since this publish, but I've fallen in a similar situation and create a simples class to simplify my life.

    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
        }
    
    }
    

    The follow link send to the complete source code: https://gist.github.com/dedeexe/d9a43894081317e7c418b96d1d081b25

    This solution was base on this article: http://vojtastavik.com/2015/03/29/real-time-formatting-in-uitextfield-swift-basics/

    0 讨论(0)
提交回复
热议问题