【问题标题】:How can we extract substring of the string by position and separator我们如何通过位置和分隔符提取字符串的子字符串
【发布时间】:2010-04-07 09:06:04
【问题描述】:

我们如何从字符串中分割子字符串

就像我有字符串

String mainString="///Trade Time///Trade Number///Amount Rs.///";

现在我有其他字符串

String subString="Amount"

然后我想在名为 subString 的第二个字符串的帮助下提取子字符串Amount Rs. 而不是通过任何其他方法但它应该通过两个参数提取,例如第一个是我的索引号为 Amount string 和 second 直到下一个字符串 ///.

【问题讨论】:

    标签: c# .net winforms string


    【解决方案1】:

    先获取子串的索引:

    int startIndex = mainString.IndexOf(subString);
    

    然后得到以下斜杠的索引:

    int endIndex = mainString.IndexOf("///", startIndex);
    

    那么你就可以得到你想要的子串了:

    string amountString = mainString.Substring(startIndex, endIndex - startIndex);
    

    【讨论】:

      【解决方案2】:
      string str = Regex.Match("///(?<String>[^/]*?" + subString + "[^/]*?)///").Groups["String"].Value;
      

      应该使用String.Format,但{x} 在@ 字符串中的确切用法赢得了我不记得的正则表达式(您需要将{} 加倍吗?)

      注意:这假设您不期待任何/,因此可以稍微改进一下。

      【讨论】:

      • 您在第一个字符串文字之前放置了一个@,因此它会查找\/\/\/ 而不是///。此外,\/ 不是有效的转义序列。您应该对放入正则表达式的subString 值使用Regex.Escape 方法,以使其对任何值都是安全的。
      【解决方案3】:

      我相信这应该可以解决您的问题:

      mainString.substring(mainString.IndexOf("Amount Rs. "), "///")
      

      其中mainString.IndexOf("Amount Rs. ")起始索引 & "///"结束索引

      【讨论】:

        【解决方案4】:

        作为对@Guffa 回答的补充,您可以从中制作扩展方法:

        注意:没有验证来确保提供的索引在字符串的范围内。

        public static class StringExtensions
        {
        
            public static string SubstringBetweenIndexes(string value, int startIndex, int endIndex)
            {
                return value.Substring(startIndex, endIndex - startIndex);
            }
        
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-02-05
          • 1970-01-01
          • 1970-01-01
          • 2015-08-01
          • 2013-03-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多