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

これはどう。

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

Console.WriteLine(newString);
于 2013-05-23T08:24:44.620 に答える
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 に答える
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 に答える