如何从字符串中删除一些空格?

How can I remove some spaces from a string?

我有一个问题。我为移动应用程序编写测试。而此时此刻,我比较了英镑、欧元、印度等不同货币的价格。可能的比较应该是"now £1.678,95"。削减 "now",削减白色 space 对我来说没问题 - 简而言之,让字符串处于可能的 Int 或 Double 结构中。但现在我在法国。在法国,队形是 "maintenant 2 500,00 €"。 "maintenant"没问题,价格外的白色space没问题,“€”没问题。

但是在 2 到 500 之间的价格中有一个 space。如果我 运行 我的测试,我只有“2”,其余的都没有了! 我该怎么做,whitespace 不应该切到这里。它应该从“2 500,00”返回spaced 到“2500,00”。

希望你有想法:)谢谢!

此时我的代码是:

var firstPrice = XCUIApplication().collectionViews.cells.element(boundBy: 0).staticTexts.element(boundBy: 2).label

firstPrice = firstPrice.replacingOccurrences(of: "£", with: "")
firstPrice = firstPrice.replacingOccurrences(of: "€", with: "")
firstPrice = firstPrice.replacingOccurrences(of: "₹", with: "")

let firstPriceArray = firstPrice.components(separatedBy: .whitespaces).filter { ![=10=].isEmpty }
firstPrice = firstPriceArray[1]

let firstPriceTrimmedDouble = firstPrice.toDouble(with: SiteIDHelper.locale(from: SiteIDHelper.SiteID(rawValue: Int(sideIDS))!))!

print(firstPriceTrimmedDouble)

不是很清楚你在找什么......但是要删除所有空格,试试这个:

var price: String = ...
while let range = price.rangeOfCharacter(from: .whitespaces) {
    price.removeSubrange(range)
}

很难,因为您不知道字符串的语言环境。 1234欧元在英文中可以写成€ 1,234.00,在法文和德文中可以写成1.234,00 €。 (欧元在英国也很普遍)。

根据您提供的有限示例,您可以删除第一个单词,然后删除其余单词中的所有空格、逗号、点和货币符号,然后再将其转换为双精度:

let priceString = "maintenant 2 500,00 €"
let unwanted = " ,.£€₹"
var doubleValue : Double?

if let range = priceString.range(of: " ") {
    let chars = priceString[range.upperBound..<priceString.endIndex]
        .characters.filter({ !unwanted.characters.contains([=10=]) })   
    doubleValue = Double(String(chars))
}

// run your asserts here