在本文给出了有一个问题:“鉴于单词的列表,返回可使用在美国键盘只有一个行的英文字母打字的话。”为了解决这个问题,我尝试使用正则表达式在C#这样的:为什么matche的结果与表达式有所不同?
public string[] FindWords(string[] words)
{
return words.Where(x => Regex.Match(
x, @"[qwertyuiop]*|[asdfghjkl]*|[zxcvbnm]*",
RegexOptions.IgnoreCase).Value == x).ToArray();
}
但仍然不能得到right.For例如,当输入,如: [“A”,“B”,“P”, “你好”]
我只能得到 “p” 返回。
我在哪里做错了吗?
什么是“不对”了。你需要学习[在提问前如何调试小程序](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。 –
@ScottChamberlain糟糕的例子。没有多少断言会帮助人们写出正确的正则表达式。是的,测试优先的方法虽然不错,但具有一定程度的理智和常识。如果我需要编写一个“Hello World”,那么至少编写7个关于该方法的断言和测试绝对是浪费时间。 –
@PhilP。不,它仍然非常相关。建议从文章的主要peice的,这将是最有帮助的是*“[在加强通过该计划如果它没有做任何事情,这不是你的列表上,则无论你的清单有错误,在这种情况下,你不明白该程序确实存在,或者你的程序有错误,在这种情况下,你编写的代码是错误的。修复错误的东西。如果你不知道如何解决它,至少现在你有一个特定的技术问题,你可以问StackOverflow!“* OP在正则表达式中犯了一个错误,如果他把它分开,他可以判断出它有什么问题。 –