如何轉義“=”作為列名的一部分?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />如何轉義“=”作為列名的一部分?
我需要實作一個「select where」語句,並將其建構成字串,其中涉及多個列名。 但是當它評估時,它試圖將“=”解釋為賦值。 我的列名稱如下:「COND=TEMP」。
在我使用的腳本部分下面:
選擇字串= “:測試名稱== benchNameToCompare” ;
//對於映射表中的每一列,如果列名是COND,則將其新增至選擇條件中
為了( j = 1 , j <=列數, j ++,
目前數據表(關聯映射表) ;
目前列名=關聯映射表<<取得列名稱() ;
如果(包含(目前列名[ j ] , “條件_” ) > 0 ,
價值=目前列名[ j ][我] ;
列名=目前列名[ j ] ;
選擇字串=選擇字串|| “ & 作為列(correlationMapTable,” ||字元(目前列名[ j ]) || “)==” ||字元(目前列名[ j ][我]) ;
) ;
) ;
選擇字串= “benchDataTable << 選擇其中(” ||選擇字串|| “)” ;
評估(解析(選擇字串)) ; //如果我將“=”作為列名的一部分,則會出現抱怨。
工作台數據表<<子集((選定的行) ,輸出表名稱( “過濾長椅” )) ;
先致謝!
回覆:如何轉義“=”作為列名的一部分?是的,引號。謝謝你的捕獲。
要了解有關轉義字元和 JSL 細微差別的更多信息,您可以參考編寫得非常好的腳本指南。幫助>>書籍>>腳本指南。(轉義字元位於第 87 頁)。如果您只是想了解語法,腳本索引會更有幫助。幫助>>腳本索引。
有幾點要指出,
對於 If() 語句中的數字,JSL 對 0 以外的任何值響應為 true。因此如果(包含(目前列名[ j ] , “條件_” ) > 0,等於如果(包含(目前列名[ j ] , “條件_” ) ,
這:
//對於映射表中的每一列,如果列名是COND,則將其新增至選擇條件中
為了( j = 1 , j <=列數, j ++,
目前數據表(關聯映射表) ;
目前列名=關聯映射表<<取得列名稱() ;
如果(包含(目前列名[ j ] , “條件_” ) > 0 ,
價值=目前列名[ j ][我] ;
列名=目前列名[ j ] ;
會更好寫:
//對於映射表中的每一列,如果列名是COND,則將其新增至選擇條件中
為了( j = 1 , j <=列數, j ++,
列名 = 列(相關映射表,j) <<獲取姓名;
如果(包含(列名, “條件_” ) ,
回覆:如何轉義“=”作為列名的一部分?嘿,布雷諾索,
是的,我接觸的時間還不夠長,還不知道 JSL 中轉義字元的起源,但它們確實以「\!」開頭。若要在字串中插入換行符,請使用“\!n”。為了防止 JMP 將引號視為字串的結尾,請將其設為 \!」。(我認為 msharp 的意思是「您需要轉義的是引號”)。
而且,是的,從其他語言轉向 JSL 可能會有點令人反感;-)。
哈特哈,
艾瑞克
回覆:如何轉義“=”作為列名的一部分?你好,姆夏普,
感謝您抽空回覆。 那麼能否澄清一下所需的轉義序列是 \! <列名位於此處> \! ?
身為 C# 程式設計師,剛學 JSL 就頭痛:)
問候,
乙
回覆:如何轉義“=”作為列名的一部分?老實說,這個劇本有很多問題。一想到調試就頭痛。
所以我不會,但本質上你的問題是這樣的:
= 不需要轉義 你需要轉義的是插入語引號。又名:
評估(解析( “dt << 選擇其中(列(”條件=溫度“)==2)” )) ;
需要成為:
評估(解析( "dt << 選擇其中(列(\!"Cond=Temp\!") == 2)" )) ;