-1
我有一個用戶名|密碼文件,其中用戶名是從密碼管道分開,每行有這樣的用戶名/密碼組合從正確的用戶名行以密碼形式的文件
雖然知道用戶名,我會希望能夠得到相應的密碼
string text = System.IO.File.ReadAllText(@"C:\userPass.txt");
string username = "Johnny";
我有一個用戶名|密碼文件,其中用戶名是從密碼管道分開,每行有這樣的用戶名/密碼組合從正確的用戶名行以密碼形式的文件
雖然知道用戶名,我會希望能夠得到相應的密碼
string text = System.IO.File.ReadAllText(@"C:\userPass.txt");
string username = "Johnny";
如果使用ReadAllLines
或ReadLines
相反,你會得到你可以搜索文件行的數組,每個分割行上|
字符。拆分的第一部分(索引0
)將是用戶名,第二部分(索引'1')將是密碼。
在下面的代碼中,我們使用StartsWith
來查找以用戶名和「|」開頭的第一行,字符,然後返回該字符串的密碼部分。它將返回null
如果沒有找到用戶名:
static string GetPassword(string userName, string filePath = @"C:\userPass.txt")
{
if (userName == null) throw new ArgumentNullException(nameof(userName));
if (!File.Exists(filePath))
throw new FileNotFoundException("Cannot find specified file", filePath);
return File.ReadLines(filePath)
.Where(fileLine => fileLine.StartsWith(userName + "|"))
.Select(fileLine => fileLine.Split('|')[1])
.FirstOrDefault();
}
注意,這不上的用戶名區分大小寫的比較。如果你想允許不區分大小寫,您可以使用:
.Where(fileLine => fileLine.StartsWith(userName + "|", StringComparison.OrdinalIgnoreCase))
使用
string username = "Johnny";
string password = GetPassword(username);
// If the password is null at this point, then either it
// wasn't set or the username was not found in the file
感謝你爲這個乾淨和簡單的解決方案,但我得到「的方法或操作未實現「試圖運行此代碼時 – Isaz
在哪一行?它對我來說工作正常... –
你需要提示在代碼文件的頂部有'使用System.Linq;' –