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批量修改
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 1、需求 我们在做开发过程中,会用到很多第三方库,并且通过CocoaPods进行管理,有时候引入的这个必要的库在U...
- 有时候我们需要修改大量文件名称,很多小伙伴不知道怎么操作,今天小编就来分享批量重命名的方法,将文件名称修改为目录名...
- 背景 windows 文件分区一般使用 NTFS 或 FAT32 文件系统, linux 使用 ext4 / xf...