我有这段代码,因为(parm_strLineData
是String
类型的参数):
parm_strLineData = <Text>:<AK_F NO="1">7</AK_F>。ポジ</Text>
Dim iPosTagClose_Start As Integer = parm_strLineData.IndexOf("</AK",0)
结果:iPosTagClose_Start = -1
注意:字符:。是2byte
为什么IndexOf不使用文本2字节?
如何修复?
答案 0 :(得分:2)
Dim parm_strLineData As String
parm_strLineData = <Text>:<AK_F NO="1">7</AK_F>???</Text>
在这里创建一个XElement
并隐式将其转换为字符串。
结果是parm_strLineData
现在不包含字符串 <Text>:<AK_F NO="1">7</AK_F>???</Text>
,但是the concatenated string value of all of the element's text and descendant's text.
在您的情况下,它是:7゜ポジ
,而:7゜ポジ
不包含"</AK"
,因此IndexOf
的结果为-1
。
我不知道您的真正问题,但要解决此问题,请使用string
代替XElement
:
parm_strLineData As String= "<Text>:<AK_F NO=""1"">7</AK_F>???</Text>"
如果您的目标是检查XML节点是否存在,请不要使用字符串解析,例如Linq2Xml。