1

嗨,我正在寻找一种解决方案,检查字符串是否以特殊字符结尾,如果是,则将其删除。删除特殊字符后的新字符串也不应包含特殊字符。

特殊字符应在数组 [!@#$%&/{()}=?+] 中以检查字符串末尾。

4

5 回答 5

10

使用String.TrimEnd怎么样?此方法专门用于从字符串中删除给定数组中的字符。

var newstr = s.TrimEnd("[!@#$%&/{()}=?+]".ToCharArray());

此外,您应该使用以下要求String.Replace替换字符串中的任何不需要的字符:

删除特殊字符后的新字符串也不应包含特殊字符

在这种情况下,您应该执行以下操作:

string unwanted = "[!@#$%&/{()}=?+]";
for (int i = 0; i < unwanted.Length; i++)
    s = s.Replace(unwanted.Substring(i, 1), "");

从整个字符串中删除所有不需要的字符的所有出现。

于 2013-05-23T08:21:26.387 回答
1
char[] specialArray = {'!', '@', '#', '$', '%', '&', '/', '{', '(', ')', '}', '=', '?', '+'};

for(int i = 0; i < specialArray.length; i++)
{
    if( inputString[inputString.length - 1] == specialArray(i) )
    {
        return inputString.Substring(0, inputString.length - 1);
    }
}
于 2013-05-23T08:22:18.677 回答
1

尝试这个:

if (text.LastIndexOfAny("!@#$%&/{()}=?+".ToCharArray()) == (text.Length - 1))
    text = text.Substring(0, text.Length - 1);

请注意,这只会从末尾修剪一个字符,即使字符串末尾的列表中有多个字符也是如此。

如果要从字符串末尾修剪列表中的所有字符,请使用 Thorsten 的答案。

所以这个答案将转换XXXX!!!XXXX!!,而 Thorsten 的将转换XXXX!!!XXXX

选择你想要的。:)

于 2013-05-23T08:23:00.393 回答
1

这个怎么样。

string x = "ASDF[";
var chars = new char [] { '[','!','@','#','$','%','&','/','{','(',')','}','=','?','+',']' };
string newString = x.TrimEnd(chars);

Console.WriteLine(newString);
于 2013-05-23T08:24:44.620 回答
0

所以基本上,您只想删除所有出现的特殊字符(不仅仅是在最后)?似乎是一份工作Regex

var newString = Regex.Replace("[!@#$%&/{()}=?+]", oldString, "");

它将所有字符替换为空字符串。如果性能很重要,您总是可以预编译Regex类似的

var re = new Regex("[!@#$%&/{()}=?+]");

然后做

var newString = re.Replace(oldString, "");

注意:我假设您并不是要删除字符'['']'. 如果这样做,则将正则表达式更改为

var re = new Regex(@"[!@#$%&/{()}=?+\[\]]");
于 2013-05-23T08:31:37.380 回答