package main
import (
"fmt"
"io/ioutil"
"math/rand"
"regexp"
"strings"
"time"
)
func scanStrings(filePath string) ([]string, error) {
// 读取文件内容
content, err := ioutil.ReadFile(filePath)
if err != nil {
return nil, err
}
// 使用正则表达式匹配字符串
pattern := regexp.MustCompile(`[0-9A-Z]{24}`)
matches := pattern.FindAllString(string(content), -1)
return matches, nil
}
func removeDuplicates(slice []string) []string {
// 使用 map 来记录已经出现过的字符串
seen := make(map[string]bool)
result := []string{}
for _, s := range slice {
if _, ok := seen[s]; !ok {
seen[s] = true
result = append(result, s)
}
}
return result
}
func replaceUUIDs(filePath string, uuids []string) error {
// 读取文件内容
content, err := ioutil.ReadFile(filePath)
if err != nil {
return err
}
// 为了防止重复,使用 map 来记录替换过的字符串
replaced := make(map[string]bool)
// 循环替换所有的 UUID
for _, uuid := range uuids {
if _, ok := replaced[uuid]; ok {
continue // 已经替换过了
}
// 随机生成一个 24 位字符串来替换 UUID
randStr := randString(24)
// 替换 UUID
content = []byte(strings.ReplaceAll(string(content), uuid, randStr))
// 记录替换过的 UUID
replaced[uuid] = true
}
// 将修改后的内容写回文件
err = ioutil.WriteFile(filePath, content, 0644)
if err != nil {
return err
}
return nil
}
func randString(n int) string {
rand.Seed(time.Now().UnixNano())
var letterRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
b := make([]rune, n)
for i := range b {
b[i] = letterRunes[rand.Intn(len(letterRunes))]
}
return strings.ToUpper(string(b))
}
func main() {
filePath := "Runner.xcodeproj/project.pbxproj"
uuids, err := scanStrings(filePath)
if err != nil {
fmt.Println(err)
return
}
uuids = removeDuplicates(uuids) // 去重
err = replaceUUIDs(filePath, uuids)
if err != nil {
fmt.Println(err)
return
}
fmt.Println("UUIDs replaced successfully.")
}
iOS项目 project.pbxproj文件UUID批量修改
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 1、需求 我们在做开发过程中,会用到很多第三方库,并且通过CocoaPods进行管理,有时候引入的这个必要的库在U...
- 有时候我们需要修改大量文件名称,很多小伙伴不知道怎么操作,今天小编就来分享批量重命名的方法,将文件名称修改为目录名...
- 背景 windows 文件分区一般使用 NTFS 或 FAT32 文件系统, linux 使用 ext4 / xf...