我有一个像这样的字符串..
2931 8795 012 00:24:14 06/03/13 10:03 O006129009857 ** 0 0
现在根据我的要求,我必须分割像2931
,06/03/13
和O006129009857
这样的子字符串。我使用了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
直到下一个字符而不是。
请帮帮我。谢谢。
答案 0 :(得分:1)
^(\d+)|(\d+\/\d+\/\d+)|\b(\w\d+)\b(?=\s*\*\*)
试试这个。只需抓住captures.see演示。
答案 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;