8

私はこのような文字列を持っています - "FirstName||Sam LastName||Jones Address||123 Main ST ..."(さらに100の異なる値)

文字列全体からサムとジョーンズだけを見つけたい。

だから文字列firstname = originalstring.substring...など

誰も私がこれを行う方法を知っていますか?

追加 - 私はいくつかのことを言及するのを忘れていたと思います.

FirstName||Sam\r\n MiddleName||\r\n LastName||Jones\r\n ....

したがって、役に立たない文字数を数えると、firstnamelastname以外の項目が必要になる可能性があります。

4

5 に答える 5

8

正規表現を使用する:

string myString = "FirstName||Sam LastName||Jones Address||123 Main ST...";
string pattern = @"FirstName\|\|(\w+) LastName\|\|(\w+) ";
Match m = Regex.Match(myString, pattern);
string firstName = m.Groups[1].Value
string lastName = m.Groups[2].Value;

そのデモをここで参照してください。

于 2011-05-03T21:51:06.017 に答える
5

これは .Split アプローチよりもうまくいくと思います。|| 持っていたら 'Sam' と 'LastName' の間で、.Split を使用する必要があります。このままでは、このほうがいいかもしれません。

    string inStr = "FirstName||Sam LastName||Jones Address||123 Main ST ";
    int fStart = inStr.IndexOf("FirstName") + "FirstName".Length + "||".Length;
    int fEnd = inStr.IndexOf(" LastName");

    string FirstName = inStr.Substring(fStart, fEnd - fStart);
于 2011-05-03T21:50:01.770 に答える
1

文字列を " " で 1 回、次に || で 2 回分割します。姓名の値を取得する

string [] ary = s.Split(" ");
string [] key;
string firstname;
string lastname;
foreach (string val in ary ) {
    key = val.Split("||");
    if ( key[0] == "FirstName") {
         firstname = key[1];
}
if ( key[0] == "LastName") {
   lastname = key[1];
}
}
于 2011-05-03T21:47:34.007 に答える
0
str = Str.Split("||")[1].split(" ")[0] //Sam
str = Str.Split("||")[2].split(" ")[0] // Jones
于 2011-05-03T21:48:15.227 に答える
0

このようなものstring firstname = originalstring.substring(indexof("FirstName") + 11, ((indexof("LastName) - indexof("FirstName") + 11 )

このようにして、|| の後の最初の文字に到達します。そして、「lastname」の前の最初の文字まで同じことが姓にも当てはまります。firstname を lastname に、lastname を address に切り替えるだけです。

編集:私のせいです...そうではありませんsubstring.(indexOf...が、

originalString.Substring(origianlString.IndexOf("FirstName) + 11, (originalString.IndexOf("LastName") - originalString.IndexOf("FirstName") + 11)姓を探すときは + 11 ではなく 10 です。"LastName".Length + + "||".Length = 10

于 2011-05-03T21:52:34.870 に答える