【问题标题】:Split substring from string and count till next character从字符串中拆分子字符串并计数到下一个字符
【发布时间】:2014-09-25 09:09:03
【问题描述】:

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

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 直到下一个字符出现而不是。 请帮助我。在此先感谢..

【问题讨论】:

    标签: c# regex string linq


    【解决方案1】:
    ^(\d+)|(\d+\/\d+\/\d+)|\b(\w\d+)\b(?=\s*\*\*)
    

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

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

    【讨论】:

    • 我想计算endIndex 直到下一个字符出现而不是空格。如何计算endIndex 直到下一个字符而不是这次出现的空格..?
    • int startIndex = line.IndexOf(Calldate);会给我给定完整 string.int endIndex = line.IndexOf(" ", startIndex); 中子字符串 Calldate 的起始索引将给出子字符串的字符数,直到它得到空白空间。现在我需要计算字符数,直到另一个字符出现而不是我现在的分隔符,即空格。你能告诉我该怎么做吗?
    【解决方案2】:

    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 00:24:14 2013 年 6 月 3 日 10:03 O006129009857 ** 0 0

    【讨论】:

    • 我也想计算偶数空间,直到下一个字符出现并将其添加到endIndex。如果你知道这个。请帮助我
    • 看看我的回答@shubhamHegdey
    【解决方案3】:

    你不能只使用 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 循环将允许您计算空格(以及每个工作在字符串中的位置。

    【讨论】:

    • int startIndex = line.IndexOf(Calldate); 将为我提供给定完整字符串中子字符串 Calldate 的起始索引。int endIndex = line.IndexOf(" ", startIndex); 将提供子字符串的字符数,直到它变为空白。现在我需要字符计数直到另一个字符出现而不是我现在的分隔符,即空格。你能告诉我怎么做吗?
    【解决方案4】:

    有点不清楚你在问什么,但如果我理解正确,你想计算字符串中的特定索引和下一个不是空格的字符之间的数字。以下代码假设您想知道 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;
    

    【讨论】:

      猜你喜欢
      • 2020-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-01
      • 2019-10-11
      • 2017-02-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多