如何将文件中所有键对应的值替换为键本身 可使用Xcode/Swift实现
解决方案
方案1:Xcode 内置正则全局替换(最快捷,无需额外代码)
- 在Xcode中打开目标键值对文件
- 点击编辑器顶部查找栏的查找选项,将匹配模式从「Text」切换为「Regular Expression」(正则匹配)
- 查找框输入正则表达式:
^"([^"]+)"\s*=\s*"[^"]*";?$ - 替换框输入替换模板:
"$1" = "$1";(如果原文件行尾无分号,去掉模板末尾的分号即可) - 点击「Preview」确认匹配结果符合预期后,点击「Replace All」即可完成批量替换,4000行内容可秒级处理完成。
方案2:Swift 本地脚本(适合多文件批量处理场景)
如果需要频繁处理同类文件,可以写一个轻量Swift脚本一次性处理:
- 新建空白文件命名为
replace.swift,写入如下代码:
import Foundation // 替换为你的目标文件实际路径,多文件可循环处理路径列表 let targetFilePath = "/Users/xxx/Project/Localizable.strings" let matchRegex = try! NSRegularExpression( pattern: "^\"([^\"]+)\"\\s*=\\s*\"[^\"]*\";?$", options: .anchorsMatchLines ) do { let rawContent = try String(contentsOfFile: targetFilePath, encoding: .utf8) let processedContent = matchRegex.stringByReplacingMatches( in: rawContent, range: NSRange(rawContent.startIndex..., in: rawContent), withTemplate: "\"$1\" = \"$1\";" ) try processedContent.write(toFile: targetFilePath, atomically: true, encoding: .utf8) print("处理完成,共\(rawContent.components(separatedBy: .newlines).count)行") } catch { print("处理失败:\(error.localizedDescription)") }
- 打开终端进入脚本所在目录,执行命令:
swift replace.swift即可运行脚本完成替换。
注意事项
- 操作前请先备份原文件,避免规则匹配异常导致内容损坏
- 若你的键值对格式和示例存在差异,可自行调整正则表达式适配
内容的提问来源于stack exchange,提问作者Rreci Rams
相关产品推荐
相关产品推荐

