gpt4 book ai didi

c# - 将一个字符串从一个字符读取到另一个字符

转载 作者:太空狗 更新时间:2023-10-29 22:25:17 26 4
gpt4 key购买 nike

我有以下字符串:

FB:77:CB:0B:EC:09{W: 0,623413, X: 0,015374, Y: 0,005306, Z: -0,781723}

我想以 float /小数形式读出 W、X、Y、Z 的值。这些值的长度并不总是相同。

如何在不使用相对位置的情况下将这个字符串从一个字符读到另一个字符?

最佳答案

我建议将“内部”部分与正则表达式匹配,但首先手动删除“外部”部分 - 只是为了使正则表达式尽可能简单。

这是一个完整的示例,其中一个方法将结果作为 Dictionary<string, string> 返回.目前尚不清楚您随后希望如何将您提供的示例值(例如“0,623413”)转换为整数,但我会将其视为与初始解析不同的任务。

我假设从值中删除所有尾随逗号没问题:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

class Test
{
static void Main()
{
string input = "FB:77:CB:0B:EC:09{W: 0,623413, X: 0,015374, Y: 0,005306, Z: -0,781723}";
var parsed = Parse(input);
foreach (var entry in parsed)
{
Console.WriteLine($"Key = '{entry.Key}', Value = '{entry.Value}'");
}
}

static readonly Regex regex = new Regex(@"(?<key>[A-Z]+): (?<value>[-\d,]+)");
static IDictionary<string, string> Parse(string input)
{
int openBrace = input.IndexOf('{');
if (openBrace == -1)
{
throw new ArgumentException("Expected input to contain a {");
}
if (!input.EndsWith("}"))
{
throw new ArgumentException("Expected input to end with }");
}
string inner = input.Substring(openBrace + 1, input.Length - openBrace - 2);
var matches = regex.Matches(inner);
return matches.Cast<Match>()
.ToDictionary(match => match.Groups["key"].Value,
match => match.Groups["value"].Value.TrimEnd(','));
}
}

输出:

Key = 'W', Value = '0,623413'
Key = 'X', Value = '0,015374'
Key = 'Y', Value = '0,005306'
Key = 'Z', Value = '-0,781723'

将这些值转换为整数可能就像删除逗号、修剪前导零然后使用 int.Parse 一样简单- 但这实际上取决于您想要的结果。

关于c# - 将一个字符串从一个字符读取到另一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54733271/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com