Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 字符串清理和格式化_C#_Asp.net - Fatal编程技术网

C# 字符串清理和格式化

C# 字符串清理和格式化,c#,asp.net,C#,Asp.net,我的应用程序中有一个URL格式化程序,但问题是客户希望能够输入特殊字符,如: :|/-“&*#@ 我有一个字符串: string myCrazyString = ":|/-\“‘&*#@"; 我有一个传递另一个字符串的函数: public void CleanMyString(string myStr) { } 如何将传递给“myStr”的字符串与“myCrazyString”进行比较,以及“myStr”中是否有要删除的字符 因此,如果我转到我的函数: “这是一个”cra@zy:

我的应用程序中有一个URL格式化程序,但问题是客户希望能够输入特殊字符,如:

:|/-“&*#@

我有一个字符串:

string myCrazyString  = ":|/-\“‘&*#@";
我有一个传递另一个字符串的函数:

public void CleanMyString(string myStr)
{
} 
如何将传递给“myStr”的字符串与“myCrazyString”进行比较,以及“myStr”中是否有要删除的字符

因此,如果我转到我的函数:

“这是一个”cra@zy:我|消息/an-d我要#清除它“

它应返回:

“这是一条疯狂的信息,我想清理它”


如何在我的CleanMyString函数中做到这一点?

尝试使用正则表达式。

您可以尝试使用if语句,如果存在字符,则提及疯狂

 if (myCrazyString.Contains("@"))
        {
            Console.WriteLine("This string is out of controL!");
        }

Regex也是一个好主意(也许更好)

使用正则表达式:

pattern = @"(:|\||\/|\-|\\|\“|\‘|\&|\*|\#|\@)";

System.Text.RegularExpressions.Regex.Replace(inputString, pattern, string.Empty);
  • |
  • 要删除特殊字符,如
    \
    本身,请使用
    \
    ,因此
    \\\
    \
    作为普通字符处理
测试:

试试这个:

1.定义StringBuilder

2.遍历要清理的字符串的字符

3.在StringBuilder中输入所需的所有内容,并通过简单地输入if条件忽略其他特殊字符

4.重新返回StringBuilder


尝试使用正则表达式。

不使用正则表达式的解决方案,仅用于可用性目的:

    static string clear(string input)
    {
        string charsToBeCleared = ":|/-\“‘&*#@";
        string output = "";
        foreach (char c in input)
        {
            if (charsToBeCleared.IndexOf(c) < 0)
            {
                output += c;
            }
        }
        return output;
    }
静态字符串清除(字符串输入)
{
字符串charsToBeCleared=“:\/-\”&*\@”;
字符串输出=”;
foreach(输入中的字符c)
{
if(charsToBeCleared.IndexOf(c)<0)
{
输出+=c;
}
}
返回输出;
}

您可以像其他人提到的那样使用正则表达式,或者像这样编写代码:

char[] myCrazyChars  = "\"\':|/-\\“‘&*#@".ToCharArray();
string myCrazyString = "this ' is a\" cra@zy: me|ssage/ an-d I& want#to clea*n it";
string[] splittedCrazyString = myCrazyString.Split(myCrazyChars);
string notCrazyStringAtAll = string.Join("", splittedCrazyString);

这里有一个非常简单的方法。根据“疯狂字符串”中的所有字符拆分字符串,然后将它们重新连接在一起,而不包含坏字符

string myCrazyString  = @":|/-\“‘&*#@";
string str = @"this ' is a"" cra@zy: me|ssage/ an-d I& want#to clea*n it";
string[] arr = str.Split(myCrazyString.ToCharArray(), StringSplitOptions.None);
str = string.Join(string.Empty, arr);

另一种可能的解决办法:

namespace RemoveChars
{
    class Program
    {
        static string str = @"this ' is a\“ cra@zy: me|ssage/ an-d I& want#to clea*n it";

        static void Main(string[] args)
        {
            CleanMyString(str);
        }

        public static void CleanMyString(string myStr)
        {
            string myCrazyString  = @":|/-\“‘&*#@";
            var result = "";
            foreach (char c in myStr)
            {
                var t = true; // t will remain true if c is not a crazy char
                foreach (char ch in myCrazyString)
                    if (c == ch)
                    {
                        t = false;
                        break;
                    }
                if (t)
                    result += c;
            }
        } 
    }
}

为什么要删除这些字符?这似乎是一个正则表达式问题,但我有点困惑,为什么客户希望能够输入这些字符,而您又想删除它们?为什么不阻止客户输入这些字符?是的,一些疯狂的客户说,要获得ou,必须做的不仅仅是从myStr中删除疯狂的字符t在您的示例中:)仅删除疯狂字符将导致“这是一条疯狂的消息,我想清除它”哦,太好了,如果我有一个| | | |?
pattern=“[|/-\”&*.#@];
是更好的选择answer@user好问题,如果你有
\
,那么就用
\\\
来处理它。因此模式将是
pattern=@”(!|@&\\\\\\”
,请注意,我在字符串处添加了
。否则您必须使用它
\\\\/code>,比如
模式=“(!|@&\\\\\\\\\\)”
最后一个,如果要删除的字符是\那么我会这样做吗?它不会尝试替换第二个字符,并且在添加“太:(lol?@user:不会的,\\so
pattern=@(!|@&\\\\\\\\\\\\\)
通常是转义字符。所以\|will escape |和\\ will escape \谢谢你,我喜欢这个答案谢谢你,熊猫,你真的在处理“#”这个案子。
namespace RemoveChars
{
    class Program
    {
        static string str = @"this ' is a\“ cra@zy: me|ssage/ an-d I& want#to clea*n it";

        static void Main(string[] args)
        {
            CleanMyString(str);
        }

        public static void CleanMyString(string myStr)
        {
            string myCrazyString  = @":|/-\“‘&*#@";
            var result = "";
            foreach (char c in myStr)
            {
                var t = true; // t will remain true if c is not a crazy char
                foreach (char ch in myCrazyString)
                    if (c == ch)
                    {
                        t = false;
                        break;
                    }
                if (t)
                    result += c;
            }
        } 
    }
}