在变量中读取和存储西里尔字母

Reading and storing cyrillic in variables

我正在尝试读取由 ; 分隔的西里尔字母值从文件中扫描每一行以查找第一个值中的匹配项,并将以下值分配给变量。

这是我目前的代码:

Dim objStream, strData, splitted
Set objStream = CreateObject("ADODB.Stream")
objStream.CharSet = "utf-8"
objStream.Open
objStream.LoadFromFile("C:\temp\textfile.txt")
strData = objStream.ReadText()
MsgBox strData
splitted = split(strData, ";") 

textfile.txt 包含如下内容:

Име;Адрес;Телефон;
Име2;Адрес2;Телефон2;

我会有这样的变量:

searchFor = "Име"

并且脚本必须将 АдресТелефон 分配给变量。

基本上,我需要在 textfile 的每一行中搜索名称(ИмеИме2),然后将该行的第二个和第三个值分配给变量。

目前 strData 获取数据,但它存储为一个字符串,我无法操作或不知道如何操作。

首先在换行处拆分文本,然后在分号处拆分每行,然后检查第一个字段是否与您的搜索值匹配。示例:

searchFor = "Име"
For Each line In Split(strData, vbNewLine)
  fields = split(line, ";")
  If fields(0) = searchFor Then
    varA = fields(1)
    varB = fields(2)
  End If
Next

请注意,您必须将脚本保存为 Unicode 格式,以免搜索字符串出现问题。

这是完整的最终工作脚本(感谢 Ansgar Wiechers!)

Dim objStream, strData, fields
Set objStream = CreateObject("ADODB.Stream")
objStream.CharSet = "utf-8"
objStream.Open
objStream.LoadFromFile("C:\temp\textfile.txt")
strData = objStream.ReadText()
MsgBox strData
searchFor = "Име"
MsgBox searchFor
For Each line In Split(strData, vbNewLine)
  fields = Split(line, ";")
  If fields(0) = searchFor Then
    varA = fields(1)
    varB = fields(2)
  End If
Next