为什么IndexOf不使用文本2字节?

时间:2013-10-18 08:46:15

标签: .net vb.net

我有这段代码,因为(parm_strLineDataString类型的参数):

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字节?

如何修复?

1 个答案:

答案 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。