C# 中的正则表达式解析为双精度数组

发布于 2024-10-09 01:03:47 字数 117 浏览 0 评论 0原文

我不太擅长正则表达式。 我有

string rgba = "[0.123,0.223,0.2,1]";

将其转换为 double[] 的最佳方法是什么?

I'm not to good in Regular Expressions.
I have

string rgba = "[0.123,0.223,0.2,1]";

What would be the best way to covert it into double[] ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

离去的眼神 2024-10-16 01:03:47
rgba.Replace("]", String.Empty)
    .Replace("[", String.Empty)
    .Split(',')
    .Select(double.Parse)
    .ToArray();

或者,如果您知道它总是以 [ 开头并以 ] 结尾,

rgba.Substring(1, rgba.Length - 2)
    .Split(',')
    .Select(double.Parse)
    .ToArray();

并且如果您不喜欢 LINQ

Array.ConvertAll(rgba.Substring(1, rgba.Length - 2).Split(','), double.Parse);

Regex 使用起来相当昂贵,我不推荐在这种情况下。

rgba.Replace("]", String.Empty)
    .Replace("[", String.Empty)
    .Split(',')
    .Select(double.Parse)
    .ToArray();

Or if you know that it will always start with [ and end with ]

rgba.Substring(1, rgba.Length - 2)
    .Split(',')
    .Select(double.Parse)
    .ToArray();

And if you don't like LINQ

Array.ConvertAll(rgba.Substring(1, rgba.Length - 2).Split(','), double.Parse);

Regex is quite expensive to use, and I wouldn't recommend it in this case.

忘东忘西忘不掉你 2024-10-16 01:03:47

您可以将正则表达式与正文一起使用:

\d+\.\d*

正则表达式将匹配一个或多个数字,然后匹配一个点,然后匹配任意数量的数字。

You can use a regex with body:

\d+\.\d*

The regex will match one or more digits, then a single dot, then any number of digits.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文