資源描述:
《在字符串中搜索標(biāo)記--labview字符串函數(shù)之一》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、最近在做的項(xiàng)冃需要用到分割字符串中的冇效數(shù)據(jù),而冇效數(shù)據(jù)的分割一燉是兩個(gè)標(biāo)識符屮間的。一肓未能找到合適的字符串函數(shù)來解析出來有效數(shù)據(jù),而咋天恰恰看到了這樣一個(gè)字符串函數(shù)一一在字符串中搜索標(biāo)記。這個(gè)函數(shù)的描述是這樣的:在字符串中搜索標(biāo)記(函數(shù))所囲迭板:其它宇符串VI和函數(shù)安裝:基礎(chǔ)軟件包從偏移里位置開始掃描輸入宇符串,尋棧標(biāo)記,并將各個(gè)宇段在標(biāo)記宇符串中輸出。標(biāo)記是連接至函數(shù)的分隔符或運(yùn)算符能識別的文本片斷。通常情況下,標(biāo)記代表解析酉i!置文件或其它基于文本的數(shù)揺格式時(shí)棧到的獨(dú)立的關(guān)鍵詞、敎值或運(yùn)算
2、符。例如,可將Thisisastring^析為單詞,因?yàn)槟J(rèn)情況下,空格裁是分隔符。詳細(xì)信息范例允許空標(biāo)記?(F)輸入字符串偏移量運(yùn)算符(無)分隔符(s,r,ri)使用緩存中的分隔/運(yùn)算數(shù)據(jù)?(F)字符串輸出標(biāo)記后偏移量標(biāo)記字符串標(biāo)記索引其中標(biāo)記是連接至函數(shù)的分隔符或運(yùn)算符能夠識別的文本片段,在這里就是指我上面所謂的有效數(shù)據(jù)段。而分隔符是上面所說的標(biāo)識符。其他引腳的說明如下:允許空標(biāo)記?確定函數(shù)在遇到多個(gè)相鄰分隔符時(shí)是否能識別標(biāo)記。如允許空標(biāo)記?的值為FALSE(默認(rèn)值),多個(gè)相鄰的分隔符可以
3、分隔輸入字符串中的兩個(gè)標(biāo)記。如允許空標(biāo)記?的值為TRUE,在每個(gè)相鄰分隔符對之間都將返回空的標(biāo)記字符串。輸入孝符串是要搜索標(biāo)記的詡串。偏移量是輸入字符串中開始掃描的點(diǎn)。默認(rèn)值為0,即字符串的起始位置。運(yùn)算符是字符串?dāng)?shù)組,如輸入字符串包含字符串?dāng)?shù)組,即使它們沒有被分隔符分隔,函數(shù)仍將其視為標(biāo)記。如輸入字符串的-部分匹配多個(gè)運(yùn)算符,函數(shù)將把最長的匹配作為標(biāo)記。例如,如〉、二和>=被定義為運(yùn)算符,輸入字符串4>二0將生成>=作為下-個(gè)標(biāo)記字符冷,偏移量為lo運(yùn)算符屮的字符串可能包含下列特殊格式代碼,用于將
4、整個(gè)數(shù)字作為單個(gè)標(biāo)記進(jìn)行掃描。%d匹配十進(jìn)制整數(shù)%o匹配八進(jìn)制整數(shù)%x匹配十六進(jìn)制整數(shù)%b匹配二進(jìn)制整數(shù)%e,%f,%g匹配浮點(diǎn)數(shù)或科學(xué)計(jì)數(shù)法實(shí)數(shù)%%匹配單個(gè)%字符注:如了符串+或-被定義為運(yùn)算符,函數(shù)將無法識別前導(dǎo)(一元)+或一符號。函數(shù)始終將英作為單個(gè)標(biāo)記返回。這是“最長匹配〃規(guī)則的例外情況。分隔符該字符串?dāng)?shù)組可作為標(biāo)記分隔符。分隔符屮的字符串不會作為標(biāo)記返冋,而是用于分隔相鄰的標(biāo)記。默認(rèn)的分隔符為空格字符:空格、制表符、換行符和回車。使用緩存中的分隔/運(yùn)算數(shù)據(jù)?是可選的高級輸入端。如沒有連線,
5、標(biāo)記字符小仍為止常狀態(tài)。通過使川緩存中的分隔/運(yùn)算數(shù)據(jù)?可以顯著改進(jìn)了符串解析的性能。在標(biāo)記寧符串第…次執(zhí)行時(shí),應(yīng)將使用緩存屮的分隔/運(yùn)算數(shù)據(jù)?設(shè)置為FALSE,在接卜來的執(zhí)行屮,只要運(yùn)算符和分隔符沒有改變,就將其設(shè)置為TRUEo使用移位寄存器并將常量FALSE作為輸入,TRUE作為輸出,可保證運(yùn)算符和分隔符在循環(huán)執(zhí)行中沒冇改變的情況下止確運(yùn)行。如使用緩存屮的分隔/運(yùn)算數(shù)據(jù)?的值為TRUE,并且運(yùn)算符或分隔符在上次執(zhí)行時(shí)發(fā)工了改變,將產(chǎn)生錯(cuò)誤的結(jié)果。如運(yùn)算符和分隔符沒冇連線或連線至程序框圖常量,則無
6、礙連線使川緩存中的分隔/運(yùn)算數(shù)據(jù)?就可得到優(yōu)化的性能。字符串輸出返回?zé)o改變的輸入字符串。標(biāo)記后偏移量確定在輸入7符串中的點(diǎn),這些點(diǎn)緊隨最近找到的標(biāo)記和任意的分隔符。任何對丁輸入字符串的后續(xù)搜索都從該偏移量開始。如偏移量小0或大輸入字符串中的字符數(shù),或者已經(jīng)到達(dá)字符串的末尾,則標(biāo)記后偏移量為標(biāo)記?符串是匹配的標(biāo)記。它可以是運(yùn)算符中的7符串或輸入字符串中位于分隔符間的任意文本字符串。標(biāo)記索引如標(biāo)記字符串匹配運(yùn)算符屮的某個(gè)元素,則值為標(biāo)記字符串在運(yùn)算符屮的索引。如標(biāo)記字符串是其它字符串,標(biāo)記索引將返回如函
7、數(shù)在到達(dá)輸入字符串末尾后,仍未找到有效的運(yùn)算符,標(biāo)記索引將返回?2。利丿IJ這個(gè)兩數(shù)我們可以將含有標(biāo)識符的數(shù)據(jù)分割成多個(gè)有效數(shù)據(jù)段。據(jù)此,我寫了一個(gè)簡單的小程序。如下:?□ber八0輸入字符串輸入進(jìn)While循壞,通過本函數(shù),搜索co分割的字符,就會將第一個(gè)有效數(shù)據(jù)段分離出來。然后木函數(shù)的輸出-標(biāo)記后偏移量經(jīng)過移位寄存器再傳給函數(shù)的輸入-偏移量。就不再考慮已經(jīng)標(biāo)記下來的冇效數(shù)據(jù)段,進(jìn)而搜尋下一個(gè)冇效數(shù)據(jù)段。當(dāng)最后的的數(shù)據(jù)段后面已經(jīng)沒有標(biāo)識符了,這個(gè)輸出的偏移量值為我通過這個(gè)條件判定while循環(huán)結(jié)束
8、。詳細(xì)具體的輸入輸出結(jié)果,不妨寫個(gè)順序結(jié)構(gòu),一個(gè)步驟一個(gè)步驟的看。再次不再詳述。只是其中的一個(gè)輸入一一允許空標(biāo)記?true時(shí),如果兩個(gè)標(biāo)識符中間沒有(兩個(gè)標(biāo)識符直接相連的話),也會顯示出空字符串。如果為false時(shí),則不會顯示空字符串,而是將兩個(gè)標(biāo)識符視為一個(gè)標(biāo)識符進(jìn)行操作。至于運(yùn)算符輸入項(xiàng),如果設(shè)置了一個(gè)條件的話,就會在有效數(shù)據(jù)段內(nèi)搜索該運(yùn)算符,把符合條件的通過標(biāo)記索引輸出出來。具體再使用其他更細(xì)化功能的話,不妨再進(jìn)行詳細(xì)實(shí)驗(yàn)。