0

我有一个字符串:

string mystring="part1, part2, part3, part4, part5";

我怎样才能只返回前 3 个元素而不先拆分它们?像这样:

string newstring="part1, part2, part3";
4

3 回答 3

1

您可以使用以下方法获得前三个:

正则表达式 r = 新正则表达式(@"(\S+, \S+, \S+), \S+");

我确信有更好的方法来编写正则表达式,但我认为这可以用于基本输入。

于 2013-09-30T01:47:05.293 回答
0

尝试查找第 3 个逗号的索引,然后获取子字符串。

例子

void Main()
{
    string mystring="part1, part2, part3, part4, part5";

    int thirdCommaIndex =  IndexOf(mystring, ',', 3);
    var substring = mystring.Substring(0,thirdCommaIndex-1);
    Console.WriteLine(substring);
}

int IndexOf(string s, char c, int n)
{
  int index = 0;
  int count = 0;
  foreach(char ch in s)
  {
     index++;
    if (ch == c)
     count++;

    if (count == n )
     break;
  }
  if (count == 0) index = -1; 
  return index;  
}
于 2013-09-30T01:49:17.973 回答
0

这将解析字符串,试图找到第三个逗号并将其以及之后的所有内容都扔掉。

        string mystring = "part1, part2, part3, part4, part5";
        UInt16 CommasFound = 0;
        UInt16 Location = 0;
        for (Location = 0; (CommasFound < 3) && 
                           (Location < mystring.Count()); Location++)
               if (mystring[Location].Equals(',')) 
                        CommasFound++;
        if (CommasFound == 3) 
        {
           string newstring = mystring.Substring(0, Location-1);  
        }
        else { // Handle the case where there isn't a third item 
             }
于 2013-09-30T01:55:54.897 回答