您好我正在寻找一个解决方案,检查字符串是否以特殊字符结尾,如果是,则删除它。删除特殊字符后的新字符串也不应包含特殊字符。
特殊字符应该在数组[!@#$%& / {()} =?+]中以检查字符串的结尾。
答案 0 :(得分: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), "");
从整个字符串中删除所有不需要的字符的所有出现。
答案 1 :(得分: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);
}
}
答案 2 :(得分:1)
试试这个:
if (text.LastIndexOfAny("!@#$%&/{()}=?+".ToCharArray()) == (text.Length - 1))
text = text.Substring(0, text.Length - 1);
请注意,即使字符串末尾的列表中有多个字符,也只会从末尾修剪一个字符。
如果要从字符串末尾修剪列表中的所有字符,请使用Thorsten的答案。
因此,此答案会将XXXX!!!
转换为XXXX!!
,而Thorsten会将XXXX!!!
转换为XXXX
。
选择您想要的那个。 :)
答案 3 :(得分:1)
这个怎么样。
string x = "ASDF[";
var chars = new char [] { '[','!','@','#','$','%','&','/','{','(',')','}','=','?','+',']' };
string newString = x.TrimEnd(chars);
Console.WriteLine(newString);
答案 4 :(得分:0)
所以基本上,你只想删除所有出现的特殊字符(不只是在最后)?似乎是Regex
的工作:
var newString = Regex.Replace("[!@#$%&/{()}=?+]", oldString, "");
用空字符串替换所有字符。如果性能很重要,您可以随时预编译Regex
之类的
var re = new Regex("[!@#$%&/{()}=?+]");
然后再做
var newString = re.Replace(oldString, "");
注意:我认为,您并不是要删除字符'['
和']'
。如果这样做,请将正则表达式更改为
var re = new Regex(@"[!@#$%&/{()}=?+\[\]]");