如何检查字符串是否只包含#

时间:2013-12-30 11:22:23

标签: c#

我有一个字母“#####” 另一个字符串如“123#abc#xyz”

我需要检查字符串是否仅包含#。如何实现此目的。

我尝试使用contains,但这不起作用。

9 个答案:

答案 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 #
}