53 lines
1.0 KiB
Go
53 lines
1.0 KiB
Go
|
package rime
|
|||
|
|
|||
|
import (
|
|||
|
"log"
|
|||
|
"os"
|
|||
|
"path"
|
|||
|
"strconv"
|
|||
|
"strings"
|
|||
|
"time"
|
|||
|
)
|
|||
|
|
|||
|
func AddWeight(dictPath string, weight int) {
|
|||
|
// 控制台输出
|
|||
|
printlnTimeCost("加权重\t"+path.Base(dictPath), time.Now())
|
|||
|
|
|||
|
// 读取文件到 lines 数组
|
|||
|
file, err := os.ReadFile(dictPath)
|
|||
|
if err != nil {
|
|||
|
log.Fatal(err)
|
|||
|
}
|
|||
|
lines := strings.Split(string(file), "\n")
|
|||
|
|
|||
|
// 逐行遍历,加上 weight
|
|||
|
isMark := false
|
|||
|
for i, line := range lines {
|
|||
|
if !isMark {
|
|||
|
if strings.Contains(line, mark) {
|
|||
|
isMark = true
|
|||
|
}
|
|||
|
continue
|
|||
|
}
|
|||
|
// 过滤空行
|
|||
|
if line == "" {
|
|||
|
continue
|
|||
|
}
|
|||
|
// 修改权重为传入的 weight,没有就加上
|
|||
|
parts := strings.Split(line, "\t")
|
|||
|
_, err := strconv.Atoi(parts[len(parts)-1])
|
|||
|
if err != nil {
|
|||
|
lines[i] = line + "\t" + strconv.Itoa(weight)
|
|||
|
} else {
|
|||
|
lines[i] = strings.Join(parts[:len(parts)-1], "\t") + "\t" + strconv.Itoa(weight)
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// 重新写入
|
|||
|
resultString := strings.Join(lines, "\n")
|
|||
|
err = os.WriteFile(dictPath, []byte(resultString), 0644)
|
|||
|
if err != nil {
|
|||
|
log.Fatal(err)
|
|||
|
}
|
|||
|
}
|