我的项目的一部分是从外部源(谷歌文档)检索字符串变量并解析它。此字符串表示宽度和高度。 我没有检索问题,我只需要将其解析为两个字符串。 该字符串有4种变体。 以下是示例:
3"x4"
3"hx4"w
3hx4w
3x4
宽度始终是第一个数字,高度始终是第二个。有时,宽度和高度都有小数点。
我是一个正则表达式的立方体。如果有人可以帮助我将其解析为两个数字值字符串,我将非常感激。
答案 0 :(得分:3)
Dim matches = Regex.Matches("3.45x4.3""", "[\d.]+")
Console.WriteLine("width: " + matches(0).Value)
Console.WriteLine("height: " + matches(1).Value)
正则表达式的英文表示基本上是[\d.]
是一个数字或点的字符。 +
表示一个或多个。
答案 1 :(得分:2)
我建议你学会钓鱼,因为它会带来红利,这是一个非常简单的字符串,可用正则表达式解析。
编辑:它比我想象的更简单。你不必使用我在这里提到的大部分内容,因为你不必在同一行上浏览多个这些测量。 Check out Yuriy's answer。不过,请查看其余内容并开始学习一些正则表达式:)
您必须使用分组/捕获来获取您匹配的数据。包裹你想要与parens匹配的东西来做到这一点:
(someTextToMatch)
不要将您不需要捕获的内容分组,也不要使用非捕获组:
(?:someTextToMatch)
(在这个例子中你可能不需要这些,但你最终可能需要它们,因为你只获得9次捕获)
立即使用有用的语言元素:
\s match any single whitespace character
\d match any single digit
. match any single character
[Xx] match a single upper-case or lower-case x
? match one or zero of the previous match
+ match one or more of the previous match
* match zero or more of the previous match (probably won't need this here)
一些文档:
我还建议使用Google搜索正则表达式教程。这是.Net特定的一个:
答案 2 :(得分:1)
像下面这样的事情就是快速做到这一点
Dim s as string = GetStrinFromDocs()
' remove quotes
s.replace("""","")
'remove other chars
s.replace("w","")
s.replace("h","")
dim Width as integer = ctype(s.split("x")(0),integer)
dim Height as integer = ctype(s.split("x")(1),integer)
您应该考虑使用正则表达式来执行此操作,