4

たとえば、文字列から空白末尾のコンマを削除したい場合は、次のように実行できます。

String x = "abc,\n";
x.Trim().Trim(new char[] { ',' });

abc正しく出力します。これを拡張メソッドで簡単にラップすることはできますが、1回の呼び出しでこれを行うための組み込みの方法があるのではないかと思いTrim()ます。私はPythonに慣れており、これを行うことができます。

import string
x = "abc,\n"

x.strip(string.whitespace + ",")

ドキュメントには、いくつかの例外を除いて、すべてのUnicode空白文字が削除されると記載されていますが(「呼び出し元への注意」セクションを参照)、拡張メソッドで文字配列を手動で定義せずにこれを行う方法があるかどうか疑問に思います。

これを行うための組み込みの方法はありますか?削除する空白以外の文字の数はさまざまであり、必ずしもカンマが含まれているとは限りません。また、だけでなくすべての空白を削除したいと思います\n

4

3 に答える 3

5

はい、これを行うことができます:

x.Trim(new char[] { '\n', '\t', ' ', ',' });

改行は技術的には文字であるため、配列に追加して、への2回の呼び出しを回避できますTrim

編集

.NET 4.0はこのメソッドを使用して、文字が空白と見なされるかどうかを判別します。以前のバージョンでは、空白文字の内部リストが維持されています(ソース)。

本当に1つの呼び出しのみを使用したい場合Trim、アプリケーションは次のことを実行できます。

  1. 起動時に、 Unicode空白文字の範囲をスキャンし、Char.IsWhiteSpace各文字を呼び出します。
  2. メソッド呼び出しがtrueを返す場合は、文字を配列にプッシュします。
  3. カスタム文字も配列に追加します

Trimこれで、作成した配列を渡すことで、単一の呼び出しを使用できます。

これはChar.IsWhiteSpace現在のロケールに依存すると思いますので、ロケールに注意を払う必要があります。

于 2012-07-31T22:20:24.750 に答える
4

正規表現を使用すると、これが簡単になります。

text = Regex.Replace(text, @"^[\s,]+|[\s,]+$", "");

これは、Unicodeの空白文字にも一致します。

于 2012-07-31T22:40:13.747 に答える
1

あなたは次のストリップ拡張方法を持つことができます

public static class ExtensionMethod
{
    public static string Strip(this string str, char[] otherCharactersToRemove)
    {
        List<char> charactersToRemove = (from s in str
                              where char.IsWhiteSpace(s)
                              select s).ToList();
        charactersToRemove.AddRange(otherCharactersToRemove);
        string str2 = str.Trim(charactersToRemove.ToArray());
        return str2;
    }
}

そして、あなたはそれを次のように呼ぶことができます:

static void Main(string[] args)
        {
            string str = "abc\n\t\r\n ,  asdfadf , \n \r \t";
            string str2 = str.Strip(new char[]{','});
        }

出力は次のようになります。

str2 = "abc\n\t\r\n ,  asdfadf"

Strip Extensionメソッドは、最初にリスト内の文字列からすべての空白文字を取得します。リストから削除する他の文字を追加してから、トリムを呼び出します。

于 2012-07-31T22:32:59.887 に答える