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

时间:2017-05-26 10:07:52

标签: swift string currency xctest removing-whitespace

我有一个问题。我为移动应用编写测试。在这一刻,我比较了不同货币的价格,如英镑,欧元,印度等。可能的比较应该是“现在1.678,95英镑”。对我来说切割“现在”,切割空白是没有问题的 - 简短地说,可以在可能的Int或Double形式中获得字符串。但现在我在法国。在法国,编队是“维持2 500,00€”。 “维护”没有问题,价格外的空白没有问题,“€”没有问题。

但是价格在2到500之间有一个空间。如果我运行我的测试,我只有“2”,其余的都没了! 我怎么能这样做,空白不应该在这里切割。它应该从“2 500,00”退回到“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 { !$0.isEmpty }
firstPrice = firstPriceArray[1]

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

print(firstPriceTrimmedDouble)

2 个答案:

答案 0 :(得分:1)

很难,因为你不知道字符串的语言环境。 1234欧元可以用英语风格写成€ 1,234.00,或者用法语和德语风格写成1.234,00 €。 (欧元在英格兰也很常见)。

根据您提供的有限示例,您可以删除第一个单词,然后在将其转换为Double之前删除剩余的所有空格,逗号,点和货币符号:

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($0) })   
    doubleValue = Double(String(chars))
}

// run your asserts here

答案 1 :(得分:0)

不太清楚你的目标是什么......但要删除所有空格,请试试这个:

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