2

.Netにcharの列挙型がどこにでも組み込まれているかどうか疑問に思っています。

CSVファイルを解析しているところですが、次のようなことができるようになりたいと思いました。

line.Split(Chars.Comma)

それ以外の:

line.Split(char(','))

それは私にはきれいに思えます。

.Netはこれをどこかに隠していますか?

追伸:ほとんどの状況でWindows.Forms.Keysが機能することは知っていますが、すべての句読記号が含まれているわけではありません。

編集(ほとんどの回答の後):

私はC#ではなくBooでコーディングしているので(したがって、一般的に.Netを要求した理由)、line.Split('、')は'、'はBooの文字列として機能しません。

私はそれが巨大なユニコードをカバーしなければならないことを考慮していませんでしたが、私がそれを使用することを計画していたのは、そのようなアプリを作成するたびに句読記号の定数を作成する必要がないようにすることですテキスト操作の。

これを解決するために私が選んだ方法は次のとおりです。

static class StingSplitters:

    public final Comma = char(',')
    public final BackSlash = char('\\')
    ...

すべての入力をありがとう。

4

5 に答える 5

3

いいえ、そんなことはありません。本当に何のために?すべての Unicode 文字の定数を含むクラスが実際に存在し、新しいコード ポイントが割り当てられるたびに Unicode との同期が維持される必要がありますか? そして、私はそのような名前だと思います

Chars.ArabicLigatureUighurKirghizYehWithHamzaAboveWithAlefMaksuraIsolatedForm

に比べて少し扱いに​​くくなり'ﯹ'ます。

書くこともできます

line.Split(',');

よりも読みにくいものではありませんline.Split(Chars.Comma)

于 2013-03-13T10:08:39.733 に答える
1

あなたはただ行うことができます:

line.Split(',');

または const を作成します。

const char COMMA = ',';
...
line.Split(COMMA);

または、列挙型で作成します:

 public enum Chars {
    Comma = ',',
 }

 line.Split((char)Chars.Comma);

私の意見では、 const ソリューションが最もクリーンです。ただし、const を COMMA とは呼ばず、SEPERATOR と呼びます。それが本当のことです。

于 2013-03-13T10:09:23.190 に答える
1
line.Split(',');

うまく動作します。ただし、これは実際にはparams配列であり、毎回新しい配列が含まれることに注意してください。char[]最も一般的に使用するものについては、static を作成することをお勧めします。これを派手なラッパーでラップすることもできますが、私は単純にします。私は本当に次のようなクラスを持っています:

// interesting fact; we have hundreds of locations where we use someString.Split(char) or similar; every single one
// of those allocates a new array; idea: fill this in and do a mass replace to avoid a shit-ton of allocations
public static class StringSplits
{
    public static readonly char[] Space = { ' ' },
                                  Comma = { ',' },
                                  Period = { '.' },
                                  ...
                                  NewLine_CarriageReturn = { '\n', '\r' },
                                  Comma_SemiColon = { ',', ';' },
                                  Comma_SemiColon_Space = { ',', ';', ' ' },
                                  BackSlash_Slash_Period = { '\\', '/', '.' };

これらのいくつかは単一文字ではないことに注意してください。

ばかげているように聞こえますが、多くの文字列操作を行っていると、多くの不要な配列が追加される可能性があります。

率直に言って、次のようなメソッドを .NET 5 に含めたいと思っています。

string.Split(char);
string.Split(char,char);

代わりに:

string.Split(params char[] chars);
于 2013-03-13T10:09:37.260 に答える
0

まず、クラスの名前は .net の Chars ではなく Char です。第二に、文字の列挙型はないと思います。区切り文字として複数の文字の文字配列を渡す必要があります。

詳細については、このページを参照してください。 http://msdn.microsoft.com/en-us/library/system.string.split.aspx

于 2013-03-13T10:13:48.057 に答える
0

Windows.Forms.Keys は、キーボードに表示される内容についてのみ知る必要があります。char 列挙型は unicode であり、最大 65.000 までの異なる値を含むことができるため、より多くの値が必要になります。Char と入力すると想像してみてください。65k の可能なオプションを含むドロップダウンを取得します。

いいえ、Char列挙型はありません。定数が必要な場合は、自分で定義する必要があります。

于 2013-03-13T10:09:32.770 に答える