格式化后从字符串中删除空格

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#)

从字符串中删除空格

JS 正则 允许半角英数字、- (减号)、_ (下划线) 允许全角文字 英数字、记号(空格除外)

字符串消除空格

删除数字,然后从字符串的开头删除一个空格

字符串匹配后从文本文件中获取文件名 - PHP