vb.net - 使用带有规则的预定义结构重写文件名
问题描述
我需要一些帮助来构建我的问题然后对其进行编码。
我正在读取文件的名称,文件的名称是使用定义的结构组成的,比如说:
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,我需要保留在最后。
我想我的问题是,我怎样才能做到这一点?
我是否需要首先使用值列表中的某种匹配将我的字符串拆分为不同的变量?
如果是这样,我该怎么做?
还是我完全错过了什么?
谢谢
解决方案
假设String
变量line
包含ID1 ## ID2 ID3 ID4
. 例如,
Dim line As String = "FP 22 PETIT CHEF BV JUNIOR LORIS"
假设 , 等的可能值列表是ID1
' sID2
的数组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
现在,您可以在提取号码并搜索其他 ID 之前按如下方式删除id1
。line
line = line.Replace(id1 & " ", "")
接下来的两个字符line
是##
. 您可以按如下方式提取它们,然后将它们从line
.
Dim n As String = line.Substring(0, 2)
line = line.Replace(n & " ", "")
您现在可以像ID1
上面那样提取其他 ID。构建最终文件路径现在很容易,因为它的所有部分都包含在id1
, n
,id2
等中。
推荐阅读
- bash - 如果 -eq 与 [[ ... ]] 内的非数字参数一起使用,如何使 bash 抛出错误?
- c - 我的 break 语句没有破坏我的代码中的 while 语句?
- python - Python 3:字典不包含所有值
- c - 为什么 -O1 比 -O2 快
- php - PHP:原始日期和列时间,我该如何设置它
- c++ - 嵌套映射将第二个键检测为重复
- react-native - 反应原生 | 安卓工作室
- android - 有没有办法在不在同一网络中的两个设备之间创建套接字连接?
- office365 - Word.InsertLocation.Replace 不适用于内容控制
- python - PYOMO-CPLEX PERSISTENT : TypeError: outputfile must have a write 方法