2013-10-18 59 views
1

我有這樣的代碼(parm_strLineDataString類型的參數):爲什麼IndexOf不能使用文本2字節?

parm_strLineData = <Text>:<AK_F NO="1">7</AK_F>。ポジ</Text> 

Dim iPosTagClose_Start As Integer = parm_strLineData.IndexOf("</AK",0) 

結果:iPosTagClose_Start = -1

注:性格:是2字節

爲什麼的IndexOf與文字不2字節工作?

如何解決?

+1

你能寫出正確的VB.NET代碼嗎?如果你把第一行轉換成正確的VB.NET(編譯的代碼,包括引號轉義),它會正常工作。 – varocarbas

+0

和不';'末 – sloth

+0

對不起parm_strLineData = 的所有值:゜ポジ

回答

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。

+0

VB.NET是否將XML隱式轉換爲字符串?可怕。 – usr

+0

@usr只有在使用'Option Strict Off'時。每個理智的人都應該儘可能使用'Option Strict On',因爲它不允許這種隱式轉換。 – sloth

相關問題