从字符串中获取Substring的长度

时间:2014-09-24 05:21:06

标签: c# string substring

我有一个跟随字符串12 OT 14:51 2407 005 00:06 200 0009715008742 0。现在我已根据空格将此字符串分解为字符串数组,并使用以下代码。

string[] arrUser = line.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

现在我必须选择以上arrUser元素。现在根据我的要求,我必须从原始字符串中获取数组元素位置,直到它到达字符串中的下一个字符(单词)。例如。

If i have selected 12 it should be like (0,2)
If i have selected 14:51 it should be like (7,12)

如何得到这个。请帮帮我.. 很抱歉,我无法更好地描述它。没有得到desc。 提前谢谢..

1 个答案:

答案 0 :(得分:0)

你可以通过多种方式实现这一目标,其中最简单的方法可能只是使用string.IndexOf(string)。您可以只获取起始字符的索引,并知道输入的长度。那就是那个。

但是,如果你想要更有效率(和乐趣 - 我承认我只是为了它的乐趣而回答这一点)关于它,我可能只是这样做一次通过。我还没有测试过这个,但它应该做你想要的。很简单。

public IEnumerable<Tuple<string, int>> SplitWithIndexes(string str, char splitChar)
{
    StringBuilder ret = new StringBuilder();
    int retStartIndex = 0;

    for (int v = 0; v < str.Length; v++)
    {
         char c = str[v];

         if (c == splitChar)
         {
             yield return new Tuple<string, int>(ret.ToString(), retStartIndex);
             ret.Clear();
             retStartIndex = v + 1;
         }
         else
         {
             ret.Append(c);
         }
    }

    yield return new Tuple<string, int>(ret.ToString(), retStartIndex);
}