如何将用户输入字符串与任何意味着 localhost 的内容相匹配?

Rai*_*olt 5 c# asp.net

我需要判断用户是否在文本框中输入了本地机器的名称。结果证明这比我原先想象的要棘手。

string userInput = inputTextbox.Text.ToLower();
string machineName = Environment.MachineName.ToLower();

bool isLocal = userInput.Equals(machineName ) || // This is what we started with...
             userInput.Equals(".") ||             // Then we added this...
             userInput.Equals("localhost");       // And then we added this...
Run Code Online (Sandbox Code Playgroud)

如您所见,它变得非常混乱且无法维护。例如,不包括地址 127.0.0.1。我们的测试部门每次为 home 找到新名称时都会不断编写错误。我们需要一劳永逸地解决这个错误。

有没有更简单的方法来做到这一点?

Phe*_*nyx -1

你可以做类似的事情

List<String> localNames = new List<string>{Environment.MachineName.ToLower(), ".", "localhost"};

bool isLocal = localNames.Any(s=>s.Equals(userInput));
Run Code Online (Sandbox Code Playgroud)

然后你只需要扩展列表而不是添加额外的条件。尽管并不理想,但它使代码的更新变得更容易。您也可以输入代码来查找计算机的本地 IP,并将其自动添加到字符串列表中。

就我个人而言,我还没有看到任何其他方法可以针对所有可能的情况执行类似的操作。