VBScript正则表达式循环
我正在使用带有正则表达式的vbscript来解析一个文件,以便转换一组坐标。这是我的当前代码:VBScript正则表达式循环,vbscript,coordinate-transformation,Vbscript,Coordinate Transformation,我正在使用带有正则表达式的vbscript来解析一个文件,以便转换一组坐标。这是我的当前代码: Class cFormat Private m_oSB Private Sub Class_Initialize() Set m_oSB = CreateObject("System.Text.StringBuilder") End Sub ' Class_Initialize Public Function formatOne(sFmt, vElm) m_oSB.AppendFormat s
Class cFormat
Private m_oSB
Private Sub Class_Initialize()
Set m_oSB = CreateObject("System.Text.StringBuilder")
End Sub ' Class_Initialize
Public Function formatOne(sFmt, vElm)
m_oSB.AppendFormat sFmt, vElm
formatOne = m_oSB.ToString()
m_oSB.Length = 0
End Function ' formatOne
Public Function formatArray(sFmt, aElms)
m_oSB.AppendFormat_4 sFmt, (aElms)
formatArray = m_oSB.ToString()
m_oSB.Length = 0
End Function ' formatArray
End Class ' cFormat
Dim goFS : Set goFS = CreateObject("Scripting.FileSystemObject")
Dim oFmt : Set oFmt = New cFormat
Dim oRE : Set oRE = New RegExp
oRE.Global = True
oRE.Multiline = True
' 0 1 2 3
oRE.Pattern = "^(\d+)d(\d+)'(\d+\.\d+)""([WN])$"
Dim sALL : sALL = goFS.OpenTextFile("C:\...\lat1.txt").ReadAll()
WScript.Echo sALL
WScript.Echo oFmt.formatArray( _
"|{0,-5}|{1,-11}|{2,-11}|{3,-15}|" _
, Array("LoLa", "Degrees", "Minutes", "Seconds") _
)
Dim oMTS : Set oMTS = oRE.Execute(sALL)
Dim oMT
For Each oMT In oMTS
Dim sLoLa : sLoLa = oMT.SubMatches(3)
Dim nDegrees : nDegrees = CDbl(oMT.SubMatches(0))
Dim nMinutes : nMinutes = CDbl(oMT.SubMatches(1))
Dim nSeconds : nSeconds = CDbl(oMT.SubMatches(2))
WScript.Echo oFmt.formatArray( _
"|{0,-5}|{1,11:N2}|{2,11:N2}|{3,15:N6}|" _
, Array(sLoLa, nDegrees, nMinutes, nSeconds) _
)
Next
我是以此为基础的
我遇到的问题是,循环中的所有变量都是空的,所以在最后一次回音中我什么也没有得到。我似乎无法确定问题所在,是正则表达式吗?循环?我真的不知道
lat1.txt文件是一个简单的txt文件,包含以下行:
41d3'40.313"N
38d42'29.295"N
41d28'13.616"N
第一个回显语句正在工作。。。问题在最后一个
有人能帮我吗
提前感谢,,
Cláudio这是你的模式,用
oRE.Pattern = "^(\d+)d(\d+)\'(\d+\.\d+)""(N|W) *$"
如下所示,秒的输出在我的系统上不正确,但这可能是区域设置
41d3'40.313"N
38d42'29.295"N
41d28'13.616"N
|LoLa |Degrees |Minutes |Seconds |
|N | 41,00| 3,00| 40.313,000000|
|N | 38,00| 42,00| 29.295,000000|
|N | 41,00| 28,00| 13.616,000000|
谢谢!你能告诉我这些模式出了什么问题吗?这样我就能理解错误了。特殊字符,如“需要由\转义”和“你需要捕获结尾空格”,你可以包含$以匹配行的结尾,因此我在一个空格后面加*表示zer0或更多发生。我想西北方向不是问题,但在这种情况下,(N | W)较短