字符串清理和格式化

时间:2011-07-29 12:17:20

标签: c# asp.net

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

  

:| / - “'& *#@

我有一个字符串:

string myCrazyString  = ":|/-\“‘&*#@";

我有一个传递另一个字符串的函数:

public void CleanMyString(string myStr)
{
} 

如何将传递“myStr”的字符串与“myCrazyString”进行比较,以及“myStr是否有myCrazyString中的任何字符将其删除?”

所以,如果我转到我的功能:

  

“这个”是一个“cra @ zy:me | ssage / an-d I&希望#清除它“

它应该返回:

“这是一个疯狂的消息,我想要清理它”

我如何在CleanMyString函数中执行此操作?

8 个答案:

答案 0 :(得分:4)

使用正则表达式,如:

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

System.Text.RegularExpressions.Regex.Replace(inputString, pattern, string.Empty);
  • |
  • 拆分要删除的每个字符串
  • 要删除|本身的特殊字符,请使用\,因此\|这将处理|正常字符。

测试:

inputString = @"H\I t&he|r#e!";
//output is: HI there!

答案 1 :(得分:3)

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

    static string clear(string input)
    {
        string charsToBeCleared = ":|/-\“‘&*#@";
        string output = "";
        foreach (char c in input)
        {
            if (charsToBeCleared.IndexOf(c) < 0)
            {
                output += c;
            }
        }
        return output;
    }

答案 2 :(得分:3)

您可以像其他人一样使用正则表达式,或者像这样的代码:

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);

答案 3 :(得分:2)

尝试使用正则表达式。

答案 4 :(得分:2)

这是一种相当直接的方式。根据“疯狂字符串中的所有字符拆分字符串,然后将它们连接在一起,没有坏字符。

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);

答案 5 :(得分:2)

另一种可能的解决方案:

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;
            }
        } 
    }
}

答案 6 :(得分:-1)

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

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

正则表达式也是一个好主意(也许更好)

答案 7 :(得分:-1)

试试这个:

1.定义StringBuilder

2.浏览要清理的字符串的字符。

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

4.Rerurn StringBuilder。

或者

尝试使用正则表达式。