有一個ini檔案格式
########## Order section ##########
KeyOne=Value1
....
....
....
...
KeyMore=999
Key = 88888*
......
......
......
如何編輯 = 后面的內容?我嘗試了很多方法,但由于 ini 檔案中沒有部分,我無法弄清楚如何更改 Value1 和 999 和 88888* 的值?
嘗試使用 split "=" 拆分字串,但未能更改值。并在檔案中添加新行?后鍵 = 88888*
1.如果文本框中有空格或文本,則它不起作用。
const string filepath = @"C:\Users\123\Desktop\Config.ini";
string text = File.ReadAllText(filepath);
const string PATTERN = @"KeyOne=(?<Number>[\d\.] )";
Match match = Regex.Match(text, PATTERN, RegexOptions.IgnoreCase);
if (match.Success)
{
int index = match.Groups["Number"].Index;
int length = match.Groups["Number"].Length;
text = text.Remove(index, length);
text = text.Insert(index, Program.form1.textBox11.Text);
File.WriteAllText(filepath, text);
}
uj5u.com熱心網友回復:
一個 INI 檔案有一個定義明確的結構,由一個或多個 [Sections] 和每個部分下的零或多對 [Key]=[Value] 組成。至少沒有部分的檔案不是正確的 INI 檔案,標準 Windows API GetPrivateProfileString 和 WritePrivateProfileString 無法讀取具有該格式的檔案。
但是,您的檔案比標準 INI 檔案要簡單得多。它只是由成對的 [Key]=[Value] 組成,因此它非常適合 Dictionary<string, string>
閱讀它可以很簡單
Dictionary<string, string> GetConfigData(string fileName)
{
Dictionary<string, string> data = new Dictionary<string, string>();
foreach (string line in File.ReadLines(fileName))
{
var lineData = line.Split('=');
data.Add(lineData[0], lineData[1]);
}
return data;
}
寫回那個字典就更簡單了
void WriteConfigData(string fileName, Dictionary<string, string> data)
{
File.WriteAllLines(fileName, data.Select(z => $"{z.Key}={z.Value}{Environment.NewLine}"));
}
現在,如果你想改變一些你可以擁有的價值
var data = GetConfigData("yourbadinifile.ini");
data["KeyValue"] = "a new value";
WriteConfigData("yourbadinifile.ini", data);
警告:在上面的示例中,沒有錯誤檢查。一個健壯的解決方案應該檢查傳遞給 read 方法的檔案是否存在,以及拆分操作是否產生一個包含兩個元素的陣列。還要考慮檢查二進制檔案也是一個未處理的問題并且具有復雜的解決方案。所以我們也可以考慮讓例外冒泡到客戶端呼叫者。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/513902.html
標籤:C#。网初始化
上一篇:從隔離檔案夾EWS恢復電子郵件
