1

たとえば、文字列から3つの文字列を取得したいVks - Vks * Son

 txtName.Text = objDoctor.DocName.Substring(0, objDoctor.DocName.IndexOf("-")).Trim();

最初の部分を正常に取得しました。つまり

txtMidName.Text = objDoctor.DocName.Substring(1, objDoctor.DocName.IndexOf("-")).Trim();

 txtLastName.Text = objDoctor.DocName.Substring(0,objDoctor.DocName.LastIndexOf("*")).Trim();

注: 2 番目の部分は MidName であり、Vks - Vks * Sonつまり Son の 3 番目の部分は Last Name です。

これをチェックしてください:

  Name = Name.Trim();

arrNames = Name.Split(' ', '-' , '*');

if (arrNames.Length > 0) {
    GivenName = arrNames[0];
}
if (arrNames.Length > 1) {
    FamilyName = arrNames[arrNames.Length - 1];
}
if (arrNames.Length > 2) {
    MiddleName = string.Join(" ", arrNames, 1, arrNames.Length - 2);
}

本当に誰かを助けるだろう

4

3 に答える 3

4

単に使用しますstring.Split

var parts = objDoctor.DocName.Split('-', '*');
txtName.Text = parts[0];
txtMidName.Text = parts[1];
txtLastName.Text = parts[2];

文字列に少なくとも 3 つの部分が含まれていない場合、例外がスローされることに注意してください。

于 2013-01-07T16:36:50.810 に答える
1

String.Split メソッドを使用します。また、スペースも削除したいと思いますか?

String data = "Vks - Vks * Son";
String[] pieces = (from piece in data.Split(new char[]{'-', '*'}, StringSplitOptions.RemoveEmptyEntries)
                                select piece.Trim()).ToArray();

Console.WriteLine(pieces[0]);
Console.WriteLine(pieces[1]);
Console.WriteLine(pieces[2]);

そこで、LINQ を少し使用して、文字列が分割された後に文字列の部分からスペースを削除しました。

これにより、コマンド ラインで次の結果が得られます。

Vks
Vks
Son
于 2013-01-07T16:55:18.460 に答える
1

このような文字列の解析には正規表現を使用します。

しかし、もちろん学習曲線があります。しかし、一度マスターすれば、それはとても簡単です。したがって、ここに代替手段があります:

string parse = "Vks - Vks * Son";
string pattern = @"(?'first'\w*)\s*-\s*(?'second'\w*)\s*\*\s*(?'last'\w*)";
Match m = Regex.Match(parse, pattern);
if (m.Success)
{
   Console.WriteLine(m.Groups["first"].Value);
   Console.WriteLine(m.Groups["second"].Value);
   Console.WriteLine(m.Groups["last"].Value);
}

パターンの簡単な説明:

文字列を 3 つの部分 (最初、2 番目、最後) に分割しています。

単語 (0 文字以上) は \w* です - 少なくとも文字が必要な場合は \w+ を使用します

\s*-\s* はスペース (0 個以上の空白文字) の後に '-' とスペース (再び 0 個以上の空白文字) が続きます。

\s*\*\s* - 「*」は特殊文字であるため、エスケープする必要があります。

お役に立てれば。

BD

于 2013-01-07T17:03:28.993 に答える