我有一个字母“#####” 另一个字符串如“123#abc#xyz”
我需要检查字符串是否仅包含#。如何实现此目的。
我尝试使用contains,但这不起作用。
答案 0 :(得分:11)
假设String not null ,可能的解决方案是:
String text = "123#abc#xyz";
Boolean result = text.All((x) => x == '#');
如果空格应该忽略(例如“## ###”被认为是正确的字符串)
String text = "123#abc#xyz";
Boolean result = text.All((x) => x == '#' || Char.IsWhiteSpace(x));
答案 1 :(得分:4)
bool IsSharpOnly(string str)
{
for(int i = 0; i < str.Length ; i++)
{
if (str[i] != '#')
return false;
}
return true;
}
答案 2 :(得分:3)
使用正则表达式的另一种解决方案:
Regex r = new Regex("^#+$");
bool b1 = r.IsMatch("asdas#asdas");
bool b2 = r.IsMatch("#####");
修改强> 不确定是否应该忽略空格,如果是这样的话:
Regex r = new Regex("^[\\s*#+]+$");
答案 3 :(得分:2)
用正则表达式吗?
像这样:“([0-9] +)|([a-z] +)”
您可以检查输入字符串是否不匹配。
例如,字符串仅包含'#'
:
String text = "123#abc#xyz";
Boolean result = Regex.Match(text, "^#*$").Success;
答案 4 :(得分:1)
试试这个,
string ss = "##g#";
if ((ss.Split('#').Length - 1).Equals(ss.Length))
{
//Contains only #
}
答案 5 :(得分:1)
你也可以试试这个:
private bool CheckIfStringContainsOnlyHash(string value)
{
return !value.Where(a => !string.IsNullOrWhiteSpace(a.ToString()) && a != '#').Select(a => true).FirstOrDefault();
}
答案 6 :(得分:1)
Dmitry的例子可能是最优雅的,但是这样的事情也可以起作用(再次假设输入已被空检查):
string test = "#####";
return test.Replace("#", "").Length == 0;
编辑:关于忽略空格的讨论,我们可以使用:
string test = "#####";
return String.IsNullOrWhiteSpace(test.Replace("#", ""));
答案 7 :(得分:1)
尝试以下代码
string txt = "123#abc#xyz";
if (!txt.Any((X) => X != '#'))
{
//Contains only '#'
}
答案 8 :(得分:0)
这也是一个解决方案
String data= "###########";
bool isAllSame = data.All(d => d == '#');
if(isAllSame)
{
// code when string contain only #
}