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

C# 如何检查字符串是否仅包含#,c#,C#,我有一根像“#######”这样的线 另一个类似“123#abc#xyz”的字符串 我需要检查字符串是否只包含#。如何实现这一点 我尝试使用contains,但这不起作用。bool-issharpfonly(string-str) bool IsSharpOnly(string str) { for(int i = 0; i < str.Length ; i++) { if (str[i] != '#') return false;

我有一根像“#######”这样的线 另一个类似“123#abc#xyz”的字符串

我需要检查字符串是否只包含#。如何实现这一点

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

bool-issharpfonly(string-str)
bool IsSharpOnly(string str)
{ 
   for(int i = 0; i < str.Length ; i++)
   {
       if (str[i] != '#')
           return false;
   }

   return true;
{ 对于(int i=0;i

}

如果字符串不为空,可能的解决方案可以是:

String text = "123#abc#xyz";
Boolean result = text.All((x) => x == '#');
如果应忽略空格(例如“#######”被视为正确的字符串)

试试这个

string ss = "##g#";

if ((ss.Split('#').Length - 1).Equals(ss.Length))
{
  //Contains only #
}

用正则表达式

就像这样:([0-9]+)|([a-z]+)”

您可以检查输入字符串是否不匹配

例如,字符串仅包含
“#”

  String text = "123#abc#xyz";
  Boolean result = Regex.Match(text, "^#*$").Success;

另一个带有正则表达式的解决方案:

Regex r = new Regex("^#+$");
bool b1 = r.IsMatch("asdas#asdas");
bool b2 = r.IsMatch("#####");
编辑 不确定是否应忽略空白,如果是:

Regex r = new Regex("^[\\s*#+]+$");
您也可以尝试以下方法:

private bool CheckIfStringContainsOnlyHash(string value)
{
    return !value.Where(a => !string.IsNullOrWhiteSpace(a.ToString()) && a != '#').Select(a => true).FirstOrDefault();
}

Dmitry的示例可能是最优雅的,但类似的东西也可以工作(再次假设输入已被空检查):

编辑:根据关于忽略空白的讨论,我们可以使用:

string test = "#####";
return String.IsNullOrWhiteSpace(test.Replace("#", ""));
请尝试下面的代码

  string txt = "123#abc#xyz";
        if (!txt.Any((X) => X != '#'))
        { 
           //Contains only '#'
        }

这也是一个解决办法

String data= "###########";
bool isAllSame = data.All(d => d == '#');
if(isAllSame)
{
// code when string contain only #
}

您的解决方案有一个严重的缺点:它会创建一个不可用的数组wanted@DmitryBychenko说得好!“foreach”循环而不是“for”循环将使您的解决方案更加优雅,IMHO+1因为我是旧学派for的粉丝,对于简单对象/表达式:)但在有想法时无法识别空格,请从OP的“#####…”示例中提供一个可能的解决方案,该示例看起来像是检查中需要忽略的空白。@mockinterface:问题是:“我需要检查字符串是否只包含#”。但是,如果应该忽略空白,只需修改All:“Boolean result=text.All(x=>x='#'| | Char.IsWhiteSpace(x))”;这辆自行车不是我的:)不过,如果OP真的表示“###”作为符合要求的字符串,那么最好将它作为答案本身的替代片段添加。@kain64b:这两个NOT(!text…!=)是干什么的?原始代码更容易理解read@Dmitry我认为最好找到任何字符的存在,而不是使用任何字符的“#”。它将很快产生结果。检查下面我的答案。只是一个想法:)不是复制品,因为OP想忽略它whitespace@André准确的问题陈述或可能重复的标题不必匹配;这是一个完全相同的更伟大的想法。这个问题展示了如何比较字符串中的每个字符;将该比较更改为忽略空白并不重要。我喜欢这样,但也需要检查空白。我在示例中对此感到疑惑,但问题中没有提到,所以我假设这只是OP的格式。将编辑。
  string txt = "123#abc#xyz";
        if (!txt.Any((X) => X != '#'))
        { 
           //Contains only '#'
        }
String data= "###########";
bool isAllSame = data.All(d => d == '#');
if(isAllSame)
{
// code when string contain only #
}