Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 哪种方法更有效/更整洁地分解此字符串?_C#_String_Optimization - Fatal编程技术网

C# 哪种方法更有效/更整洁地分解此字符串?

C# 哪种方法更有效/更整洁地分解此字符串?,c#,string,optimization,C#,String,Optimization,我试着把这根绳子分成两种颜色,想知道是否有一种更整洁的方法可以达到同样的效果 // Obtain colour values string cssConfig = "primary-colour:Red, secondary-colour:Blue"; var parts = cssConfig.Split(','); var colour1 = parts[0].Split(':')[1]; var colour2 = parts[1].Split(':')[1]; 你可以用正则表达式 st

我试着把这根绳子分成两种颜色,想知道是否有一种更整洁的方法可以达到同样的效果

// Obtain colour values
string cssConfig = "primary-colour:Red, secondary-colour:Blue";
var parts = cssConfig.Split(',');
var colour1 = parts[0].Split(':')[1];
var colour2 = parts[1].Split(':')[1];
你可以用正则表达式

string cssConfig = "primary-colour:Red, secondary-colour:Blue";
var reg = new Regex(@"([\w\-]+)\:([\w\-]+)");
foreach (Match match in reg.Matches(cssConfig))
{

}
你也可以和LINQ做点什么

    var cssConfigDict = cssConfig.Split(',')
                        .Select(x => x.Split(':'))
                        .ToDictionary(x => x.FirstOrDefault(), y => y.LastOrDefault());

也许有一个更好的方式与林克

您可以使用LINQ方法:

var colors = cssConfig.Split(',').Select(x => x.Split(':').Skip(1).Take(1));

话虽如此,我还是坚持你的方法。这是每个人都能理解的清晰代码。正则表达式版本和LINQ版本更加模糊…

请检查此项,它与您的要求类似,以便从字符串中获取dictionary对象


如果你知道顺序总是一样的。您的解决方案无论如何都需要这样做,您可以:

// Obtain colour values
string cssConfig = "primary-colour:Red, secondary-colour:Blue";
var parts = cssConfig.Split(',',':');
var colour1 = parts[1];
var colour2 = parts[3];

正则表达式当然是可能的,不过它是否更整洁或更可读取决于个人偏好和您读取正则表达式的能力。如果实际的使用情况是只读取这两种颜色,而不是任意数量的颜色,那么我可能会继续使用原始解决方案。在保持代码简单的同时,目的非常明确,如果正则表达式不是您的强项,则可以避免细微的错误

LINQ可能是最具可读性的变体,可以轻松地读取多个键值对,同时仍然使用简单的拆分机制来解析数据


根据我的经验,为了可维护性,您应该避免为一个如此小而简单的问题编写一个极其复杂、通用且看似简洁的解决方案。

hmm两次投票,但没有人阅读正则表达式,至少不是关于css/style属性syntax问题并没有明确指出它是css,它可能只是一个字符串,将成为CSSY你的权利,它不是css,只是一个存储在数据库中的字符串,是以这种方式形成的,但@sehe确实提出了一个公平的观点,我列出的正则表达式只针对您提供的字符串进行了测试。您所说的高效是什么意思?更少的代码?减少处理器时间?更少的开发工作?所有这些。不过,对于开发时间并不那么担心。
// Obtain colour values
string cssConfig = "primary-colour:Red, secondary-colour:Blue";
var parts = cssConfig.Split(',',':');
var colour1 = parts[1];
var colour2 = parts[3];