我需要一些帮助来构造问题,然后对它进行编码。
我正在读取文件的名称,该文件的名称是使用定义的结构构成的,比如说:
ID1 ## ID2 ID3 ID4
每个ID可以是列表/表中X个字符串中的1个
ID1: string1, "string with space", string2 ...
ID2: etc.
ID3: etc.
其中 ## 是数字
由此,我想使用一些预定义的规则构造一个通用名称,并检索ID1和ID4以进行进一步的分类。
首先,我需要检索ID1
然后我需要根据ID1,我需要应用一个规则,确定该号码应替换为 PM 还是 GM
if ID1 = FP and (## = 14 or 16 or 18)
then replace ## by PM
else if replace ## by GM
然后我需要调理ID4,因为我想创建一个看起来像这样的文件路径
./ID4/ID1/
文件名和创建路径的示例为:
FP 20 PETIT CHEF BV BIS LORIS |
FP 22 PETIT CHEF BV JUNIOR LORIS | --> FP PM PETIT CHEF BV LORIS
FP 24 PETIT CHEF BV BIS LORIS |
FP 26 PETIT CHEF BV JUNIOR LORIS | --> FP GM PETIT CHEF BV LORIS
filepath : ./LORIS/FP/
从我看到的问题是,不同的ID可以是1个或多个单词的字符串,因此我无法计算单词的数量。还有可能我有一个ID5 ID6,我需要将其保留在最后。
我想我的问题是,我该如何实现?
我是否需要先使用值列表中的某种匹配将字符串拆分为不同的变量?
如果是这样,我该怎么办?
还是我完全错过了什么?
谢谢
答案 0 :(得分:0)
比方说String
变量line
包含ID1 ## ID2 ID3 ID4
。例如,
Dim line As String = "FP 22 PETIT CHEF BV JUNIOR LORIS"
假设ID1
,ID2
等的可能值列表是String
的数组,即,
Dim id1s() As String = { "FP", ... }
Dim id2s() As String = { "PETIT CHEF BV", ...
...
第一个任务是在ID1
中标识ID2
,line
等。您从ID1
开始。您遍历所有可能的值,直到找到line
开头的值。
Dim id1 As String
For Each s As String In ids1
If line.StartsWith(s) Then
id1 = s
Exit For
End If
Next
If id1 Is Nothing Then
' Decide what to do in case line does not start with
' a known value.
End If
现在,您可以按照以下步骤从id1
中删除line
,然后提取数字并搜索其他ID。
line = line.Replace(id1 & " ", "")
line
中的后两个字符是##
。您可以按以下方式提取它们,并将其从line
中删除。
Dim n As String = line.Substring(0, 2)
line = line.Replace(n & " ", "")
您现在可以像在上面的ID1
中那样提取其他ID。现在,构建最终文件路径非常容易,因为您将其所有部分都放在id1
,n
,id2
等中。