刚才有个需求,需要把txt1的文本的某一行key在另外一个txt2里查找,然后赋值在txt1里。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System.IO;
using System.Text;
public class TxtFindValueToolEditor : EditorWindow
{
private const string MENU_NAME_WINDOW = "Tools/文本翻译查找";
private static string savePath = "Assets/Res/I18N/out_en.txt";
private static string findPath = "Assets/Res/I18N/out_en_trans.txt";
[MenuItem(MENU_NAME_WINDOW)]
private static void Init()
{
if (File.Exists(savePath))
{
string[] lines = File.ReadAllLines(savePath);
StringBuilder newTxt = new StringBuilder();
string fileStart = "--------------------Assets";
for (int i = 0; i < lines.Length; i++) //遍历文本
{
if (lines[i].IndexOf(fileStart) == -1) //筛选不需要查找赋值的
{
string[] worlds = lines[i].Trim().Split('=');
string getValue = findValue(worlds[0]);
if (getValue != null)
{
newTxt.AppendLine(worlds[0] + "=" + getValue);
}
}
else
{
newTxt.AppendLine(lines[i]);
}
}
File.WriteAllText(savePath, newTxt.ToString());
Debug.Log("查找替换完成!");
}
}
private static string findValue(string key)
{
string[] findLises = File.ReadAllLines(findPath);
string value = null;
string fileStart = "--------------------Assets";
for (int i = 0; i < findLises.Length; i++)
{
if (findLises[i].IndexOf(fileStart) == -1)
{
string[] worlds = findLises[i].Trim().Split('=');
if(worlds.Length>0 && key == worlds[0])
{
return worlds[1];
}
}
}
return value;
}
}