我正在尝试将基于字符串的变量与基于 .csv 的列表进行比较,以确定字符串是否存在。我忽略了考虑变量可能是项目列表之一的子字符串的可能性。
在下面的代码之前,我已提示用户输入名字和姓氏,然后使用提供的信息,执行以下操作以生成 8 个字符的用户名,然后检查列表以查看该用户名可用或已采取。
$LastName = $objTextBoxLN.text
$LastName = (Get-Culture).textinfo.totitlecase($LastName)
$UN = $objTextBoxLN.text.Substring(0,[System.Math]::Min(7, $objTextBoxLN.text.Length)).ToLower()+$objTextBoxFN.text.Substring(0,1).ToLower()
Write-Host "Searching for Username Conflicts"
Write-Host
IF(select-string -Path "c:\Folder_X\userlist.csv" -pattern $UN)
{
$UN = $objTextBoxLN.text.Substring(0,[System.Math]::Min(6, $objTextBoxLN.text.Length))+$objTextBoxFN.text.Substring(0,2)
Write-Host "Conflict found! Username" $UN.ToLower() "generated using 6 characters from last name plus 2 characters from first name (Option 2)"
Write-Host
ELSE
{
Write-Host "No Conflicts Found. Username" $UN "generated using 7 characters from last name plus 1 character from first name (Option 1)"
Write-Host
}
所以如果在 Userlist.csv 我们有一个用户名列表:
- 史密斯
- 白色
- 白威
ETC ...
最终用户输入“Harry Smit”,它将生成一个用户名“smith”,然后 IF 语句将在当前用户名“smithj”内的列表中找到“smith”,并将用户名更新为“smithhi”,但这不是我希望实现的行为,我希望它发现用户名“smith”不存在并返回原始用户名。
感谢任何人可以提供的任何帮助,希望有一个简单的解决方案。