2017-06-05 163 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”。 –