格式化后从字符串中删除空格
Posted
技术标签:
【中文标题】格式化后从字符串中删除空格【英文标题】:Remove white spaces from String after formatting 【发布时间】:2018-03-05 14:50:41 【问题描述】:我正在使用输入类型号从UITextField
格式化String
:
示例:如果我有“10000”,我将“10000”格式化为“10 000”String
。
问题:稍后我需要访问此 String 的 Int 值,但在转换时,我遇到了异常,因为 String
的格式不正确,无法转换,因为它包含空格。 (例如:Int("10 000") 不起作用。)
所以我想在转换为Int
之前从String
中删除空格,方法是使用:myString.trimmingCharacters(in: .whitespaces)
,但空格仍然存在。
我正在使用以下extension:
extension Formatter
static let withSeparator: NumberFormatter =
let formatter = NumberFormatter()
formatter.groupingSeparator = " "
formatter.numberStyle = .decimal
return formatter
()
extension BinaryInteger
var formattedWithSeparator: String
return Formatter.withSeparator.string(for: self) ?? ""
我还尝试通过执行以下操作从我的格式化程序中检索原始 NSNumber
:
print(Formatter.withSeparator.number(from: "10 000").intValue)
但结果也是nil
。
有什么想法吗?
【问题讨论】:
因为formatter
可能与myFormatter
不同,否则工作顺利,输入字符串"10 000"
的整数值为10000
– btw, trimming 只修剪前导和尾随字符。
我正在使用来自 Formatter 扩展的相同内容
然后发布您的真实代码,您实际上按原样使用。
谢谢,您对trimming
的第一个回答为我指明了方向。我需要replacingOccurences(...)
删除空格,愚蠢的错误
@AnthonyR Formatter.withSeparator.number(from: "10 000")?.intValue
为我打印 "Optional(10000)\n"
。您确定您的字符串不包含分组分隔符以外的空格吗?
【参考方案1】:
myString.trimmingCharacters(in: .whitespaces)
将删除字符串开头和结尾的空格,因此您需要通过以下代码删除字符之间的所有空格:
let newString = myString.replacingOccurrences(of: " ", with: "")
然后将newString
转换为Int
【讨论】:
【参考方案2】:已解决:
我使用的字符串末尾有一个额外的空格。例如:"10 000 "
,所以我使用的格式化程序路径错误。
【讨论】:
【参考方案3】:删除前导和尾随空格:
let myString = " It Is Wednesday My Dudes! ? "
myString.trimmingCharacters(in: .whitespaces)
print(myString) //"It Is Wednesday My Dudes! ?"
删除所有空格:
extension String
var whiteSpaceRemoved: String
replacingOccurrences(of: " ", with: "")
let myString = " It Is Wednesday My Dudes! ? "
print(myString.whiteSpaceRemoved) //"ItIsWednesdayMyDudes!?"
【讨论】:
以上是关于格式化后从字符串中删除空格的主要内容,如果未能解决你的问题,请参考以下文章
使用 String.Join 将数组转换为字符串后从字符串中删除多余的逗号(C#)