1

次の文字列があります (ここではテニス選手の名前を扱っています):

string bothPlayers = "N. Djokovic - R. Nadal"; //works with my code
string bothPlayer2 = "R. Federer - G. Garcia-Lopez"; //works with my code 
string bothPlayer3 = "G. Garcia-Lopez - R. Federer"; //doesnt works
string bothPlayer4 = "E. Roger-Vasselin - G. Garcia-Lopez"; //doesnt works

私の目的は、これらの両方のプレーヤーを 2 つの新しい文字列に分割することです (最初の bothPlayers の場合)。

string firstPlayer = "N. Djokovic";
string secondPlayer = "R. Nadal";

私が試したこと

最初の文字列/両方のプレーヤーを次の方法で分割することを解決しました(コメントとして「作品」を後ろに置いた理由も説明しています).2番目も機能しますが、最初の「-」を検索しているので運がいいそして分割します..しかし、4つのケースすべてで機能させることはできません..これが私の方法です:

string bothPlayers = "N. Djokovic - R. Nadal"; //works 
string bothPlayer2 = "R. Federer - G. Garcia-Lopez"; //works
string bothPlayer3 = "G. Garcia-Lopez - R. Federer"; //doesnt works
string bothPlayer4 = "E. Roger-Vasselin - G. Garcia-Lopez"; //doesnt works

string firstPlayerName = String.Empty;
string secondPlayerName = String.Empty;

int index = -1;
int countHyphen = bothPlayers.Count(f=> f == '-'); //Get Count of '-' in String

index = GetNthIndex(bothPlayers, '-', 1);
if (index > 0)
{
    firstPlayerName = bothPlayers.Substring(0, index).Trim();
    firstPlayerName = firstPlayerName.Trim();

    secondPlayerName = bothPlayers.Substring(index + 1, bothPlayers.Length - (index + 1));
    secondPlayerName = secondPlayerName.Trim();

    if (countHyphen == 2)
    {
        //Maybe here something?..
    }
}

//Getting the Index of a specified character (Here for us: '-') 
public int GetNthIndex(string s, char t, int n)
{
    int count = 0;
    for (int i = 0; i < s.Length; i++)
    {
        if (s[i] == t)
        {
            count++;
            if (count == n)
            {
                return i;
            }
        }
    }
    return -1;
}

誰かが私を助けてくれるかもしれません。

4

2 に答える 2

8

string.Splitほとんどのコードは、組み込みのメソッドを使用して置き換えることができます。

var split = "N. Djokovic - R. Nadal".Split(new string[] {" - "}, 
                                           StringSplitOptions.None);

string firstPlayer = split[0];
string secondPlayer = split[1];
于 2012-10-18T13:19:23.983 に答える
0

"string".Splitを使用できますが、文字列の配列を指定する必要があります。最も簡単な方法は次のとおりです。

string[] names = bothPlayers.Split(new string[]{" "}, StringSplitOptions.None);

string firstPlayer = names[0];
string secondPlayer = names[1];

幸運を :)

于 2012-10-18T13:25:41.330 に答える