2017-06-05 162 views
0

我是新來的電源構建器,我試圖使用替換功能。我需要用〜替換字符串中的'ththope('),但它給了我一個錯誤「函數的錯誤參數列表:替換」。在Power Builder嘗試用〜符號替換轉義符

Signature = "Gagandeep S'ingh" 

Signature = Replace (Signature , "'", "~'") 

請任何幫助。

回答

3

波浪號是一個修改器PowerBuilder中的字符。它具有的第一個功能是表示特殊字符,因此您有用於回車,換行符和製表符的~r, ~n, ~t。 第二個函數是一個轉義,刪除以下字符的任何特殊含義。這使您可以編寫諸如"~""之類的內容來創建一個包含引號字符的字符串。在這種情況下,最好寫'"',但如果你已經這樣做了,並且想要一個單引號,你必須將其轉義。爲DataWindow創建表達式需要額外的轉義級別,我不會在這裏進入。當你編寫"~'"時發生的事情是,代字號告訴PowerBuilder將單引號視爲普通字符。無論如何,在這種情況下它會這樣做,因爲它不在單引號字符串中。這就是爲什麼你要替換'與另一個'。如果你想〜'你必須寫"~~'"。第一個代字號告訴PowerBuilder把下面的代字符作爲一個普通字符,最後以〜'結尾。 PowerBuilder幫助列表~~是用於代字符的特殊字符,~'~"用於引用字符,但是當您使用多個級別的轉義時,最好將它視爲轉義並從左向右工作。

+0

非常感謝。你救了我。 – user3022426

+0

我發現你是新人 - 通常你會將這個答案標記爲正確,以便其他人知道並作爲禮貌回答。 :) –

0

從PowerBuilder的幫助:

更換的PowerScript功能

替換一個字符串與另一個的一部分。

語法:REPLACE(字符串1,啓動,N,字符串2)

你需要指定你想有多少個字符替換。如果要插入字符串2成字符串1使用0

所以你的榜樣,你應該嘗試類似:

IF POS(Signature, "'") > 0 THEN 
    Signature = Replace (Signature, POS(Signature, "'"), 1, "~'") 
END IF 
+0

我已經試過上面的代碼,它不給我一個錯誤,但它也不會取代字符串中的任何字符。 基本上我正在尋找一種方法來替換字符串中的字符。 – user3022426

+0

@ user3022426:如果沒有代碼,很難診斷您的問題。編輯你的問題,並添加你的當前代碼。下面貼出的代碼爲 – Seki

+0

。 – user3022426

0

這裏是我當前的代碼:

llSigCount = ldsSig.Retrieve(iuQstr.isPtID, iuQstr.ilPtVisitID, iuQstr.ilQstrID, AUTH_EVENT_TYPE) 

IF llSigCount > 0 THEN 
    lsSignature = ldsSig.GetItemString(1, "cf_name_date") 
IF POS(Signature, "'") > 0 THEN 
    Signature = Replace (Signature, POS(Signature, "'"), 1, "~'") 
END IF 
    dw_edit.Modify("auth_signature_t.Text='" + lsSignature + "'") 
END IF 
+0

您有一個變量「lsSignature」被設置爲cf_name_date中的值,但未在替換中使用。您在替換中使用變量「Signature」。 –