【问题标题】:Get Substring - everything before and after certain characters [closed]获取子字符串 - 某些字符之前和之后的所有内容[关闭]
【发布时间】:2017-09-12 15:24:34
【问题描述】:

我正在尝试找到从输出字符串中获取每个变量值的最佳方法,如下所示:

SUCCESS Post Policy Success INVOICE No. :: WS1704003404 || Policy No :: 
59203313 || App No. :: 123456724 

这是我们得到的字符串输出,我们想要得到的值

WS1704003404
59203313
123456724

【问题讨论】:

  • 你需要在这里找到一个模式。 WS1704003404 和后续值是否总是以 WS 开头?是否总是保单号、发票号和应用号?我敢肯定,RegExp 会这样做。你试过什么?
  • 您对“最佳方式”的衡量标准是什么?
  • 输出“某些字符之前和之后的所有内容”如何?它似乎在某些字符之前是 nothing 而在某些字符之后是 nothing,这与问题的标题相反。

标签: c# asp.net


【解决方案1】:

你可以使用正则表达式,例如:

class Program
{
    static void Main(string[] args)
    {
        var input = " SUCCESS Post Policy Success INVOICE No. :: WS1704003404 || Policy No :: 59203313 || App No. :: 123456724 ";

        var pattern = @"::\s*(\w+)\s*";

        var matches = Regex.Matches(input, pattern);

        foreach (Match match in matches)
            Console.WriteLine(match.Groups[1].Value);

    }
}

【讨论】:

  • 不客气
【解决方案2】:

您可以使用SplitSubstring 函数来获得您想要的结果。首先你用“||”分割那个字符串作为分隔符,然后对该字符串进行子串化,然后在单词“::”之后取任何内容

string Input = "SUCCESS Post Policy Success INVOICE No. :: WS1704003404 || Policy No :: 59203313 || App No. :: 123456724 ";
var result = Input.Split(new[] { "||" }, StringSplitOptions.None)
            .Select(x => x.Substring(x.IndexOf("::") + 3));

结果:

WS1704003404
59203313
123456724

【讨论】:

    猜你喜欢
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-24
    • 2018-08-08
    • 2022-01-07
    • 2016-06-01
    • 1970-01-01
    相关资源
    最近更新 更多