简体   繁体   中英

Extract multiple values from string using C#

I'am creating my own forum. I've got problem with quoting messages. I know how to add quoting message into text box, but i cannot figure out how to extract values from string after post. In text box i've got something like this:

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

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

Could You tell what is the easiest way to extract all "IdPost" numbers from string after posting form ?.

by using a regex

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

something like

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

I do not know exactly what is your string, but here is a regex-free solution with 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
    }
}

Demo on 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;
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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