我有一个像这样的矢量 Vector =“a:2.34; b:1.24; c:0.67”。如何获得 2.34,1.24,0.67 的值?我不想在这里使用任何拆分功能。我正在使用C#。
答案 0 :(得分:2)
您可以使用正则表达式来执行此操作。虽然这种模式非常天真地实现,但它是一个开始。我使用了Tuple而不是Vector,但你可以自己轻松改变它。
static readonly Regex VectorRegex = new Regex(@"a:(?<A>[0-9]+\.[0-9]+);b:(?<B>[0-9]+\.[0-9]+);c:(?<C>[0-9]+\.[0-9]+)", RegexOptions.Compiled);
static Tuple<double, double, double> ParseVector(string input)
{
var m = VectorRegex.Match(input);
if (m.Success)
{
double a, b, c;
a = double.Parse(m.Groups["A"].Value, System.Globalization.NumberFormatInfo.InvariantInfo);
b = double.Parse(m.Groups["B"].Value, System.Globalization.NumberFormatInfo.InvariantInfo);
c = double.Parse(m.Groups["C"].Value, System.Globalization.NumberFormatInfo.InvariantInfo);
return new Tuple<double, double, double>(a, b, c);
}
else
throw new FormatException("Invalid input format");
}
答案 1 :(得分:0)
为什么不想要分割功能?
你可以迭代向量并用strtok()
分隔每个冒号(假设你使用C / C ++)。
您还可以考虑使用KV地图。