我需要验证字符串是否采用以下格式 {x:y}或{x,y,...,z}其中x,y,z是整数或双精度数。 我以为我需要一个reg-ex和/或一个翻译。 有谁知道如何去做? 对于这样做的图书馆的建议也将深表赞赏。
第二步是让一个解释器解释像这样的表达式: 0.5 * {0.4,0.6,0.7} - > {} 0.2,0.3,0.35。我意识到最佳方法是为解释器可以使用的语法定义一个语法。
谢谢, 乙
答案 0 :(得分:2)
鉴于存在101种不同的双重格式,并且.net框架内置了Double.TryParse()。
我会使用正则表达式或只是string.split来获取包含“x,y,z”值的字符串数组,然后在每个值上调用Double.TryParse。
由于您有两种可能的格式,我首先检查输入字符串是否包含“:”,然后使用单独的代码来分割每种格式,以使代码更易于理解。
答案 1 :(得分:0)
我自己并不擅长Regex,但我确实使用它作为获取它们的来源:http://www.regexlib.com/它还包括该网站上的备忘单和正则表达式测试程序,因此您可以自己创建它们非常简单。
希望这有帮助!
答案 2 :(得分:0)
第一个选项
\{[0-9]+(\.[0-9]+)?:[0-9]+(\.[0-9]+)?\}
第二
\{[0-9]+(\.[0-9]+)?(,[0-9]+(\.[0-9]+)?)+\}
用法
var text = "{1.4,65,2.56}";
Regex regex = new Regex("\{[0-9]+(\.[0-9]+)?(,[0-9]+(\.[0-9]+)?)+\}");
if(regex.IsMatch(text))
{
//string matches your criteria
}
如果要同时检查两种类型,请将正则表达式更改为:
\{([0-9]+(\.[0-9]+)?:[0-9]+(\.[0-9]+)?)|([0-9]+(\.[0-9]+)?(,[0-9]+(\.[0-9]+)?)+)\}