我有一个用户名|密码文件,其中用户名由密码中的管道分隔,每行都有这样的用户名/密码组合
在知道用户名的同时,我希望能够获得相应的密码
let containerView: UIView = {
let view = UIView()
view.addSubview(self.awesomeView2)
view.addSubview(self.title)
view.addSubview(self.catName)
view.addSubview(self.datePublished)
return view
}()
mainScrollView.addSubview(containerView)
答案 0 :(得分:0)
如果您改为使用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