Robust string extension
extension String {
var preparedToDecimalNumberConversion: String {
split {
!CharacterSet(charactersIn: "\($0)").isSubset(of: CharacterSet.decimalDigits)
}.joined(separator: ".")
}
}
func testPreparingToDecimalNumberConversion() {
XCTAssertEqual("25.5".preparedToDecimalNumberConversion, "25.5")
XCTAssertEqual("25,5".preparedToDecimalNumberConversion, "25.5")
XCTAssertEqual("...,,,25,5,,,".preparedToDecimalNumberConversion, "25.5")
XCTAssertEqual("25.5,42,..".preparedToDecimalNumberConversion, "25.5.42")
XCTAssertEqual(".42,..".preparedToDecimalNumberConversion, "42")
XCTAssertEqual(".36,,,6,..".preparedToDecimalNumberConversion, "36.6")
XCTAssertEqual("36......6".preparedToDecimalNumberConversion, "36.6")
XCTAssertEqual("36.,.,.,6".preparedToDecimalNumberConversion, "36.6")
XCTAssertEqual(Float("25.5".preparedToDecimalNumberConversion), 25.5)
XCTAssertEqual(Float("25,5".preparedToDecimalNumberConversion), 25.5)
XCTAssertEqual(Float("...,,,25,5,,,".preparedToDecimalNumberConversion), 25.5)
XCTAssertEqual(Float("25.5,42,..".preparedToDecimalNumberConversion), nil)
XCTAssertEqual(Float(".42,..".preparedToDecimalNumberConversion), 42)
}