c# - 从字符串中提取可变数量的 token 对到一对数组

标签 c# .net regex parsing

这是要求。

我有一个字符串,其中包含多个特定格式的条目。下面的例子

string SourceString = "<parameter1(value1)><parameter2(value2)><parameter3(value3)>";

我想得到如下输出

string[] parameters = {"parameter1","parameter2","parameter3"};   
string[] values = {"value1","value2","value3"};

上面的字符串只是一个例子,有3对参数值。该字符串可能有 40、52、75 - 任意数量的条目(一个字符串中少于 100 个)。 像这样,我在一个数组中有多个字符串。我想对数组中的所有字符串执行此操作。

有人可以建议如何实现这一目标吗?我是 c# 的新手。 使用正则表达式是更好的解决方案还是有其他方法? 非常感谢任何帮助。

最佳答案

如果您不喜欢 RegEx,您可以这样做:

  class Program
  {

    static void Main()
    {

        string input = "<parameter1(value1)>< parameter2(value2)>";
        string[] Items = input.Replace("<", "").Split('>');

        List<string> parameters = new List<string>();
        List<string> values = new List<string>();

        foreach (var item in Items)
        {
            if (item != "")
            {
                KeyValuePair<string, string> kvp = GetInnerItem(item);
                parameters.Add(kvp.Key);
                values.Add(kvp.Value);
            }
        }

        // if you really wanted your results in arrays
        //
        string[] parametersArray = parameters.ToArray();
        string[] valuesArray = values.ToArray();

    }


    public static KeyValuePair<string, string> GetInnerItem(string item)
    {
        //expects parameter1(value1)
        string[] s = item.Replace(")", "").Split('(');
        return new KeyValuePair<string, string>(s[0].Trim(), s[1].Trim());
    }
}

它可能比 RegEx 方法快一点点,但肯定没有那么灵活。

关于c# - 从字符串中提取可变数量的 token 对到一对数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6764403/

相关文章:

c# - 从网络打开解决方案时,Visual Studio 经常卡住

c# - 如何在 C# 中访问嵌入式 .Net 图像资源所需的示例代码

.net - 非 UI 线程可以显示在屏幕上吗?

regex - Nginx 阻止/拒绝访问多个位置正则表达式

c# - 无法使用此程序绘制图像?

c# - 动态Linq无法解析long.Parse()

c# - 使用表优化中继器的 asp.net C# 代码

c# - 检查(移动)浏览器是否支持背景图片

c# - RegEx.Replace 但排除 html 标签内的匹配项?

python - 正则表达式从 email.message_from_string 中过滤掉 ">"和 "=20"