代码之家  ›  专栏  ›  技术社区  ›  Oleg Gordiichuk

在我的例子中,为什么字符串不相等?

  •  2
  • Oleg Gordiichuk  · 技术社区  · 6 年前

    我有 currencyFormatter 这就是 se_SV 场所

    var currencyFormatter: NumberFormatter = {
        let formatter = NumberFormatter()
        formatter.currencySymbol = ""
        formatter.locale = Locale(identifier: "se_SV")
        formatter.minimumFractionDigits = 2
        formatter.maximumFractionDigits = 2
        formatter.numberStyle = .currencyAccounting
        formatter.isLenient = true
        return formatter
    }()
    

    我正在转换 NSNumber String .

    let firstString = currencyFormatter.string(from: NSNumber(value: 22222222.50)) // "22 222 222,50 "
    

    而不是我创造的 一串 手动操作,与 firstString .

    let secondString = "22 222 222,50 "
    

    为什么当我检查 firstString == secondString 我收到 false ?

    1 回复  |  直到 6 年前
        1
  •  8
  •   Martin R    6 年前
    print(Array(firstString!.unicodeScalars))
    // ["2", "2", "\u{00A0}", "2", "2", "2", "\u{00A0}", "2", "2", "2", ",", "5", "0", "\u{00A0}"]
    
    print(firstString!.replacingOccurrences(of: "\u{A0}", with: " ") == secondString)
    // true
    

    显示数字格式化程序使用“不间断空格”分隔组 U+00A0 . 这样可以防止数字被拆分 多行文本中的行。