9

文字列を分割するのに問題があります。単語だけを2つの異なる文字に分割したい:

 string text = "the dog :is very# cute";

と文字 の間の単語だけを取得するにはどうすればよいですか?:#

4

8 に答える 8

17

;String.Split()でメソッドを使用できます。params char[]

指定されたUnicode文字配列の要素で区切られたこのインスタンスのサブ文字列を含む文字列配列を返します。

string text = "the dog :is very# cute";
string str = text.Split(':', '#')[1]; // [1] means it selects second part of your what you split parts of your string. (Zero based)
Console.WriteLine(str);

これがDEMOです。

何回でも使えます。

于 2013-02-10T12:16:26.020 に答える
8

これは実際には分割ではないため、を使用Splitすると、使用したくない文字列の束が作成されます。文字のインデックスを取得し、以下を使用するだけSubStringです。

int startIndex = text.IndexOf(':');
int endIndex = test.IndexOf('#', startIndex);
string very = text.SubString(startIndex, endIndex - startIndex - 1);
于 2013-02-10T12:15:40.577 に答える
5

このコードを使用する

var varable = text.Split(':', '#')[1];
于 2013-02-10T12:15:44.037 に答える
2
Regex regex = new Regex(":(.+?)#");
Console.WriteLine(regex.Match("the dog :is very# cute").Groups[1].Value);
于 2013-02-10T12:14:36.453 に答える
2

のオーバーロードの1つは、string.Splitparams char[]のように分割するために任意の数の文字を使用できます。

string isVery = text.Split(':', '#')[1];

そのオーバーロードを使用していて、返された配列から2番目の項目を取得していることに注意してください。

ただし、@ Guffaが彼の回答で述べているように、あなたがしていることは実際には分割ではなく、特定のサブ文字列を抽出することなので、彼のアプローチを使用する方が良いかもしれません。

于 2013-02-10T12:14:40.153 に答える
1

使用String.IndexOfしてString.Substring

string text = "the dog :is very# cute"  ;
int colon = text.IndexOf(':') + 1;
int hash = text.IndexOf('#', colon);
string result = text.Substring(colon , hash - colon);
于 2013-02-10T12:18:51.030 に答える
1

これは役に立ちますか:

    [Test]
    public void split()
    {
        string text = "the dog :is very# cute"  ;

        // how can i grab only the words:"is very" using the (: #) chars. 
        var actual = text.Split(new [] {':', '#'});

        Assert.AreEqual("is very", actual[1]);
    }
于 2013-02-10T12:15:56.943 に答える