c#substring indexof

时间:2011-05-03 21:45:18

标签: 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 ....

所以现在,如果我计算不会帮助我的字符数,那么除了 firstname lastname 之外,还需要更多的项目。

5 个答案:

答案 0 :(得分: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;

查看其演示here

答案 1 :(得分:4)

我认为这可能比.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);

答案 2 :(得分: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];
}
}

答案 3 :(得分:0)

str = Str.Split("||")[1].split(" ")[0] //Sam
str = Str.Split("||")[2].split(" ")[0] // Jones

答案 4 :(得分:0)

像这样string firstname = originalstring.substring(indexof("FirstName") + 11, ((indexof("LastName) - indexof("FirstName") + 11 )

这样你就可以到达||之后的第一个字母了直到“姓氏”之前的第一个字母,同样适用于姓氏,你只需用姓氏和姓氏切换名字

编辑:我的错......它不是substring.(indexOf...,而是

originalString.Substring(origianlString.IndexOf("FirstName) + 11, (originalString.IndexOf("LastName") - originalString.IndexOf("FirstName") + 11)当找到姓氏时,它不是+ 11而是10,因为"LastName".Length + + "||".Length = 10