如何从字符串中删除一些空格?
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
我有一个问题。我为移动应用程序编写测试。而此时此刻,我比较了英镑、欧元、印度等不同货币的价格。可能的比较应该是"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