C#删除特殊字符

如何解决C#删除特殊字符

| 我想从字符串中删除所有特殊字符。允许的字符为A-Z(大写或小写),数字(0-9),下划线(_),空格(),百分比(%)或点号(。)。 我已经试过了:
        StringBuilder sb = new StringBuilder();
        foreach (char c in input)
        {
            if ((c >= \'0\' && c <= \'9\') || (c >= \'A\' && c <= \'Z\') || (c >= \'a\' && c <= \'z\') | c == \'.\' || c == \'_\' || c == \' \' || c == \'%\')
            { sb.Append(c); }
        }
        return sb.ToString();
和这个:
        Regex r = new Regex(\"(?:[^a-z0-9% ]|(?<=[\'\\\"])s)\",RegexOptions.IgnoreCase | RegexOptions.CultureInvariant | RegexOptions.Compiled); 
        return r.Replace(input,String.Empty); 
但是似乎没有任何作用。任何帮助将不胜感激。 谢谢!     

解决方法

您可以将第一种方法简化为
StringBuilder sb = new StringBuilder();
foreach (char c in input)
{
    if (Char.IsLetterOrDigit(c) || c == \'.\' || c == \'_\' || c == \' \' || c == \'%\')
    { sb.Append(c); }
}
return sb.ToString();
这似乎通过了简单的测试。您可以使用LINQ缩短它
return new string(
    input.Where(
        c => Char.IsLetterOrDigit(c) || 
            c == \'.\' || c == \'_\' || c == \' \' || c == \'%\')
    .ToArray());
    ,
Regex.Replace(input,\"[^a-zA-Z0-9% ._]\",string.Empty)
    ,第一种方法似乎是正确的,除了在
c == \'.\'
之前有一个
|
(按位或)而不是
||
。 顺便说一句,您应该说明不起作用的内容(不是编译,崩溃还是生成错误的输出?)     ,
StringBuilder sb = new StringBuilder();
foreach (char c in input)
{
    if (char.IsLetterOrDigit(c) || \"_ %.\".Contains(c.ToString()))
        sb.Append(c);
}
return sb.ToString();
    ,这是我的版本的外观。
StringBuilder sb = new StringBuilder();
foreach (char c in input)
{
    if (Char.IsLetterOrDigit(c) ||
        c == \'.\' || c == \'_\' || c == \' \' || c == \'%\')
        sb.Append(c);
    }
}
return sb.ToString();
    ,将每个字符转换为整数,然后将其ascii代码与ascii表进行比较,您可以在互联网上找到该表:http://www.asciitable.com/
    {
        char[] input = txtInput.Text.ToCharArray();
        StringBuilder sbResult = new StringBuilder();

        foreach (char c in input)
        {
            int asciiCode = (int)c;
            if (
                //Space
                asciiCode == 32
                ||
                // Period (.)
                asciiCode == 46
                ||
                // Percentage Sign (%)
                asciiCode == 37
                ||
                // Underscore
                asciiCode == 95
                ||
                ( //0-9,asciiCode >= 48
                    && asciiCode <= 57
                )
                ||
                ( //A-Z
                    asciiCode >= 65
                    && asciiCode <= 90
                )
                ||
                ( //a-z
                    asciiCode >= 97
                    && asciiCode <= 122
                )
            )
            {
                sbResult.Append(c);
            }
        }

        txtResult.Text = sbResult.ToString();
    }
    ,
private string RemoveReservedCharacters(string strValue)
{
    char[] ReservedChars = {\'/\',\':\',\'*\',\'?\',\'\"\',\'<\',\'>\',\'|\'};

    foreach (char strChar in ReservedChars)
    {
        strValue = strValue.Replace(strChar.ToString(),\"\");
    }
    return strValue;
}
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?