c#substring indexof

ref*_*fer 7 c# substring indexof

我有一个看起来像这样的字符串 - "FirstName||Sam LastName||Jones Address||123 Main ST ..."(100多个不同的值)

我想从整个字符串中找到Sam和Jones.

所以firstname = originalstring.substring......等等

有谁知道我怎么做到这一点?

加法 - 我想我忘了提几件事.

FirstName||Sam\r\n MiddleName||\r\n LastName||Jones\r\n ....
Run Code Online (Sandbox Code Playgroud)

所以现在,如果我计算不会帮助我的字符数,原因可能需要更多的项目而不仅仅是名字姓氏.

Ali*_*tad 7

使用正则表达式:

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;
Run Code Online (Sandbox Code Playgroud)

在这里查看它的演示.


Rob*_* P. 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);
Run Code Online (Sandbox Code Playgroud)


Avi*_*tus 1

我会将字符串拆分两次,一次在“”上,然后在 || 上再次拆分。获取名字和姓氏的值

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];
}
}
Run Code Online (Sandbox Code Playgroud)