检查字符串是否仅包含"&"字符

1 c# asp.net c#-4.0

如何检查字符串是否仅包含"&".我的意思是,如果用户输入&或&&&或一串'&'.请注意,应忽略http://myurl.com/&var=79或类似的内容.它应检查包含&字符的字符串.请帮我!!!

fub*_*ubo 18

当你说

string仅包含"&"

我假设,具有任何其他字符的字符串无效.

string str = "&&&";
bool result = str.All(x => x == '&'); //true, because it contains no other char
Run Code Online (Sandbox Code Playgroud)

另一种方式 - 没有linq的oneliner

bool result = str.Replace("&", String.Empty).Length == 0;
Run Code Online (Sandbox Code Playgroud)


Bot*_*lan 15

我确信有一个更好的方法与正则表达式,但这是一个可能的解决方案:

class Program
    {
        static void Main(string[] args)
        {
            char testChar = '&';
            string test1 = "&";
            string test2 = "&&&&&&&&&&";
            string test3 = "&&&&&&&u&&&&&&&";

            Console.WriteLine(checkIfOnly(testChar, test1)); // true
            Console.WriteLine(checkIfOnly(testChar, test2)); // true
            Console.WriteLine(checkIfOnly(testChar, test3)); // false
            Console.WriteLine(checkIfOnly('u', test3));      // false
            Console.WriteLine(checkIfOnly('u', "u"));      // true
            Console.WriteLine(checkIfOnly('u', "uuuu"));      // true


        }

        static bool checkIfOnly(char testChar, string s)
        {
            foreach (char c in s)
            {
                if (c != testChar) return false;
            }
            return true;
        }

    }
Run Code Online (Sandbox Code Playgroud)


Con*_*Fan 7

这是一个相当简单的方法:

bool allAmpersands = !string.IsNullOrEmpty(str) && str.Trim('&').Length == 0;
Run Code Online (Sandbox Code Playgroud)

如果字符串不为空,它会在删除两端的&符号后检查字符串中是否还有任何内容.


Dr.*_*ail 5

使用RegEx解决方案

string str = "&&&&"; 
bool b = Regex.IsMatch(str,"^&+$");
Run Code Online (Sandbox Code Playgroud)