【问题标题】:Swift Remove control characters from stringSwift 从字符串中删除控制字符
【发布时间】:2020-03-28 19:02:42
【问题描述】:

我有一个正在扫描条形码的 Swift 应用程序。条形码有时会在开头包含一个不可见的控制字符:\u{1D}

我使用这种方法从字符串中删除值,但我正在寻找更强大的东西,以防出现其他控制字符或在字符串内部而不是在开头。

if(articleFilter.hasPrefix("\u{1D}")){
    let stringSize = articleFilter.count - 6
    finalArticleCode = String(articleFilter.suffix(stringSize))
}

【问题讨论】:

    标签: swift barcode control-characters


    【解决方案1】:

    也许你可以使用替换字符串协议

    articleFilter = articleFilter.replacingOccurrences(of: "\u{1D}", with: "")
    

    我认为它会解决你的问题。

    【讨论】:

    • 还有没有办法使用 .controlCharacters 替换occurenzces()?当我尝试 finalArticleCode = articleFilter.replacingOccurrences(of: .controlCharacters, with: "") 我得到“表达式类型不明确,没有更多上下文”作为错误
    【解决方案2】:

    您可以使用扩展名过滤除数字以外的其他字符。

    extension String {
    
      func filterNonNumeric() -> String {
        return self.components(separatedBy: CharacterSet.decimalDigits.inverted).joined()
      }
    }
    
    
    var str = "\u{1D}01000000000010"
    self.sampleLabel.text = str.filterNonNumeric()
    

    结果将是:

    【讨论】:

      【解决方案3】:

      从开头和结尾删除字符称为修剪。控制字符是:

      https://developer.apple.com/documentation/foundation/nscharacterset/1416371-controlcharacters

      所以,像这样:

      let articleFilterNew = articleFilter.trimmingCharacters(in: .controlCharacters)
      

      【讨论】:

        【解决方案4】:

        使用修剪字符非常简单

        var str =  "\u{1D}01000000000010"
        
        let filteredOne = str.trimmingCharacters(in: .controlCharacters)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-12-02
          • 1970-01-01
          • 2011-05-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-09-09
          • 2017-06-20
          相关资源
          最近更新 更多