我有一个字符串,我需要检查这个字符串是否包含任何不在给定列表中的字符。
假设我有这个允许的字符new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' , '.'}
如果字符串是"54323.5“-这将是ok!
如果字符串是"543g23.5“-这是不可以的,因为它包含的"g”不在我允许的字符列表中。
空字符串被视为无效。
我试图通过使用"IndexOfAny()“来实现这一点,但到目前为止还没有成功。当然,将所有不允许的字符传递给此方法不是一个好的解决方案。
请注意,允许的字符列表可能会发生变化,基于列表变化更改验证算法不被视为一种解决方案。
对于那些问我我尝试过的代码的人来说,这是:
private bool CheckInvalidInput(string stringToCheck)
{
char[] allowedChars = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
var chars = Enumerable.Range(0, char.MaxValue + 1)
.Select(i => (char)i)
.ToArray();
var unallowedChars = chars.Except(allowedChars).ToArray();
bool validString = true;
if(stringToCheck.IndexOfAny(unallowedChars) != -1)
{
validString = false;
}
return validString;
}
希望你能有一个更好的解决方案:D。
https://stackoverflow.com/questions/53840169
复制相似问题