从字符串中拆分子字符串并计数到下一个字符

时间:2014-09-25 09:09:03

标签: c# regex string linq

我有一个像这样的字符串..

2931 8795  012 00:24:14 06/03/13 10:03 O006129009857       **     0           0    

现在根据我的要求,我必须分割像293106/03/13O006129009857这样的子字符串。我使用了IndexOf字符串方法来获取开始和结束一旦在代码中出现这样的空白空间,就会显示子字符串的索引。

 int startIndex = line.IndexOf(Calldate);
 int endIndex = line.IndexOf(" ", startIndex);
 int difference = endIndex - startIndex;
 strSubstring = (startIndex + "," + difference);

正如我们可以看到endIndex我已经取line.IndexOf(" ", startIndex);而现在我想接下一个字符作为示例如果我必须采取O006129009857然后我必须计算到**或任何在该地方可用的其他字符来计算endIndex ..

请帮我计算endIndex直到下一个字符而不是。 请帮帮我。谢谢。

4 个答案:

答案 0 :(得分:1)

^(\d+)|(\d+\/\d+\/\d+)|\b(\w\d+)\b(?=\s*\*\*)

试试这个。只需抓住captures.see演示。

http://regex101.com/r/qC9cH4/14

答案 1 :(得分:0)

string.Split函数将为您完成此任务:

        string text = "2931 8795  012 00:24:14 06/03/13 10:03 O006129009857       **    0           0";
        char[] Delimiters = new char[]{' '};
        var result = text.Split(new char[]{' '}, StringSplitOptions.RemoveEmptyEntries);

结果将是 2931 8795 012 零时24分14秒 13年6月3日 10:03 O006129009857 ** 0 0

答案 2 :(得分:0)

你不能使用string.Split('');返回一个由空格分隔的字符串数组[" "?]

string CallDate = "2931 8795  012 00:24:14 06/03/13 10:03 O006129009857       **     0           0    ";
string[] parts = CallDate.Split(' ');
parts = parts.Where(s => !string.IsNullOrWhiteSpace(s)).ToArray();

您的零件数组看起来像

{"2931", "8795", "012", "00:24:14", "06/03/13", "10:03", "O006129009857", "**", "0", "0"}

编辑:要计算单词之间的空格,请删除该行

parts = parts.Where(s => !string.IsNullOrWhiteSpace(s)).ToArray();

,你的数组看起来像

"2931", "8795", "", "012", "00:24:14", "06/03/13", "10:03", "O006129009857", "", "", "", "", "", "", "**", "", "", "", "", "0", "", "", "", "", "", "", "", "", "", "", "0", "", "", "", "" 

每个单词之间的空格数是每个非空字符串之间的空字符串数。对数组进行简单的for循环将允许您计算空格(以及字符串中每个工作的位置。

答案 3 :(得分:0)

有点不清楚你在问什么,但如果我理解正确,你想要计算字符串中特定索引与下一个不是空格的字符之间的数字。以下代码假定您想知道foo和bar之间的字符数,但您知道起始索引。

string input = "foo     bar";
int startIndex = 3;
string pattern = @"\S";
var regex = new Regex(pattern);
int endIndex = regex.Match(input, startIndex).Index;
int characterCount = endIndex - startIndex;