8

我有一个看起来像这样的字符串 - "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 ....

所以现在如果我计算对我没有帮助的字符数,原因可能需要更多的项目,而不仅仅是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

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

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 )

这样你就可以得到 || 之后的第一个字母 直到“姓氏”之前的第一个字母,姓氏也是如此,您只需将名字与姓氏切换,将姓氏与地址切换

编辑:我的错......不是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 回答