我目前正在研究一個基本程序,但我在選擇字符串變量時遇到了問題。所有的變量都以_開始,然後跟着一串相關的單詞。從文件中篩選字符串變量並對其進行更改
0
A
回答
2
首先,你不需要讀取整個文件並再次保存它那經過的每一行,你可以做,而不是所有的替換然後保存一次循環中。
要進行替換,可以使用正則表達式替換。我不知道你要找對文本做什麼樣的轉變,但你可以做類似如下(在這個例子中,我只是轉換文本爲大寫):
string[] textLines = File.ReadAllLines(@"c:\Users\Darren\Desktop\Hello.txt");
var results = new List<string>();
foreach(var line in textLines)
{
var result = Regex.Replace(line, @"_(.*)\s", match =>
{
return $"~{match.Groups[1].Value.ToUpper()} ";
});
results.Add(result);
}
File.WriteAllLines(@"c:\Users\Darren\Desktop\newHello.txt", results.ToArray());
相反return $"~{match.Groups[1].Value.ToUpper()} ";
您可以放置以您想要的方式轉換文本的代碼。 match.Groups[1].Value
將包含_
之後和空格之前的文本
-1
沒錯,這段代碼看起來各種各樣的錯誤,我會首先關注讓代碼更高效。毫不費力,你的目標是在特定角色之後找到一個字嗎?
一個簡單的解決方案是沿東西:
var index = input.IndexOf("_");
var newString = new string(input[index].TakeWhile(m=>m!=' ').ToArray());
將繼續服用字符和下一個字符是一個空字符串停止。這是一種方法。這隻適用於單個變量和單個單詞,因此它的用法非常有限。
解決這個問題的第二種方法是使用正則表達式字符串並使用匹配,然後進行替換。基本字符串會是這樣的
_([a-z])\w+
將匹配_接着旁邊一個字,你還可以通過使用{1,N}跟着你想要的金額改進,例如
_([a-z])\w+ {1,3}
將匹配_Input _hello
相關問題
- 1. 更改對象變量字符串
- 2. 從字符串執行命令並對其進行計時
- 3. 將字符串變量從字符串更改爲int
- 4. 從字符串更改變量類型爲二進制
- 5. 更改字符串中的變量javascript
- 6. 從其他文件行,並將其篩選
- 7. 從用戶獲取字符串並對其進行處理
- 8. 對查詢字符串進行Java JSP篩選
- 9. PHP:選擇字符串的一部分(從)並對其應用更改
- 10. 使用LINQ從文件中選擇一個字符串,對其進行分割並返回指定的成員
- 11. 如何根據列字符串篩選csv文件中的行
- 12. 如何獲取一串字符串並對其進行過濾?
- 13. 更改字符串「@patient」變量
- 14. 更改變量轉換爲字符串
- 15. Python更改字符串變量的值
- 16. 擊:更改字符串變量與
- 17. 如何讀取文件A中的每行/字符串A,並在文件B中找到包含字符串的行,並在ubuntu中對其進行刪除
- 18. 如何通過HTML中的子字符串進行篩選?
- 19. 正則表達式:其他進程的篩選字符串
- 20. Python從字符串和其他變量中創建變量名
- 21. 對字符串變量AS3數組的更改不會自動更新變量
- 22. Drools - 在條件中使用全局變量並對其進行更新
- 23. PHP - 選擇隨機字符串/變量來從文件回顯
- 24. 從bash中的變量中選擇字符串和字符
- 25. 修改變量字符串
- 26. 篩選行不匹配字符串
- 27. 如何篩選從JSON字符串
- 28. PHP作爲數組訪問字符串變量並更改值
- 29. 使用一對字符串篩選字符串列表
- 30. 替換字符串並再次對其進行編碼
不能將每行存儲爲字符串數組,然後執行'text []。split(delimiter)',它將解析/分割並存儲每個元素你可以在單獨的數組中使用分隔符嗎? –
你的文件結構如何?每行看起來像這樣:'_variableName一些相關的文本'?並比下一行類似。你能舉一個輸入和預期輸出的例子嗎?我認爲使用'String.Split'方法可以很簡單地解決這個問題 –