我有一个跟随字符串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。 提前谢谢..
答案 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);
}