繁体   English   中英

使用C#从字符串中提取多个值

[英]Extract multiple values from string using C#

我正在创建自己的论坛。 我在引用消息时遇到问题。 我知道如何在文本框中添加引用消息,但是我不知道如何在发布后从字符串中提取值。 在文本框中,我有类似以下内容:

[quote IdPost=8] Some quoting text [/quote]

[quote IdPost=15] Second quoting text [/quote]

您能说出发布表单后从字符串中提取所有“ IdPost”数字的最简单方法是什么?

通过使用正则表达式

@"\[quote IdPost=(\d+)\]"

就像是

Regex reg = new Regex(@"\[quote IdPost=(\d+)\]");
foreach (Match match in reg.Matches(text))
{
   ...
}

我不知道您的字符串到底是什么,但是这是Substring的无正则表达式解决方案:

using System;

public class Program
{
    public static void Main()
    {
        string source = "[quote IdPost=8] Some quoting text [/quote]";

        Console.WriteLine(ExtractNum(source, "=", "]"));
        Console.WriteLine(ExtractNum2(source, "[quote IdPost="));
    }

    public static string ExtractNum(string source, string start, string end)
    {
        int index = source.IndexOf(start) + start.Length;
        return source.Substring(index, source.IndexOf(end) - index);
    }

    // just another solution for fun
    public static string ExtractNum2(string source, string junk)
    {
        source = source.Substring(junk.Length, source.Length - junk.Length); // erase start
        return source.Remove(source.IndexOf(']')); // erase end
    }
}

DotNetFiddle上的演示

var originalstring = "[quote IdPost=8] Some quoting text [/quote]";

//"[quote IdPost=" and "8] Some quoting text [/quote]"
var splits = originalstring.Split('=');
if(splits.Count() == 2)
{
    //"8" and "] Some quoting text [/quote]"
    var splits2 = splits[1].Split(']');
    int id;
    if(int.TryParse(splits2[0], out id))
    {
        return id;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM