提取引号之间的单词,并将值存储在变量中

本文关键字:存储 变量 之间 单词 提取 | 更新日期: 2023-09-27 18:01:38

我需要提取引号之间的单词,并将值存储在变量中。

我的实际字符串将是

m: '液体'n:'4'

从上面的字符串。我需要提取

字CCD_ 1&4

并像这样存储

var m = "liquid";
var n = "4";

我如何在c#中的正则表达式中做到这一点

提取引号之间的单词,并将值存储在变量中

如果格式总是这样,那么您可以通过:进行拆分,并知道您将拥有一个以所需元素开头的字符串数组,位于'个字符之间。

这是一个通用的解决方案

public Dictionary<string, string> GetValues(string input)
{
    var results = new Dictionary<string, string>();
    var pairs = input.Split(" ");
    foreach(var pair in pairs)
    {
        var parts = pair.Split(":");
        results.Add(parts[0], parts[1].Trim("'"));
    }
    return results;
}
var str = "m:'liquid' n:'4'";
var values = GetValues(str);
var m = values["m"];
var n = values["n"];

当你用"linq"标记你的问题时,你可以试试这个:

var str = @"m:'liquid' n:'4'";
var r = str.Split(new [] {''''}).Where((s, i) => i % 2 == 1).ToArray();
var m = r[0];
var n = r[1];
Regex regex = new Regex("(?<=')''w+(?<!')");
var matches = regex.Matches("m:'liquid' n:'4'");

将匹配"前面和"后面的任何单词。

var m = matches[0];
var n = matches[1];
   var s = "m:'liquid' n:'4'";
   var ss = s.Split(new char[]{' ', ':'}, StringSplitOptions.RemoveEmptyEntries);

您将在ss:{"m"、"liquid"、"n"、"'4'"}中有对。如果存在空值("(,它就会工作。

您实际上可以使用.indexOf字符串

var x = "m:'liquid' n:'4'";
var split = x.Split(' ');
var indexm0 = split[0].IndexOf("'");
var indexm1 = split[0].LastIndexOf("'");
var m = split[0].Substring(indexm0, indexm1 - 1);
var indexn0 = split[1].IndexOf("'");
var indexn1 = split[1].LastIndexOf("'");
var n = split[1].Substring(indexn0, indexn1 - 1);