在Power Builder中尝试用〜符号替换转义字符

时间:2017-06-05 17:02:41

标签: powerbuilder

我是电源制造商的新手,我正在尝试使用替换功能。我需要用〜来替换字符串中的一个aposthope('),但是它给了我一个错误“函数的错误参数列表:replace”。

Signature = "Gagandeep S'ingh"

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

请随时提供帮助。

3 个答案:

答案 0 :(得分:3)

Tilde是PowerBuilder中的修饰符。它的第一个功能是表示特殊字符,因此您可以使用~r, ~n, ~t来回车,换行和制表符。 第二个函数是一个转义,它删除了后续字符的任何特殊含义。这允许您编写"~""之类的内容来创建包含引号字符的字符串。在这种情况下,最好写'"',但如果你已经这样做并想要一个单引号,你必须逃避它。为DataWindow创建表达式需要额外的转义级别,我不会在这里进入。写"~'"时发生的事情是波形符号告诉PowerBuilder将单引号视为普通字符。在这种情况下它会这样做,因为它不在单引号字符串中。这就是你用'另一个'取代'的原因。如果你想〜'你必须写"~~'"。第一个代字号告诉PowerBuilder将以下代字号视为常规字符,最后以〜'结束。 PowerBuilder帮助将~~列为代字号的特殊字符,将~'~"列为引号字符,但是当您使用多个级别的转义时,最好将其视为逃避并从左到右工作。

答案 1 :(得分:0)

来自PowerBuilder帮助:

替换PowerScript函数

将一个字符串的一部分替换为另一个字符串。

语法:替换(string1,start,n,string2)

您需要指定要替换的字符数。如果要将string2插入string1,请使用0。

所以在你的例子中你应该尝试类似的东西:

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

答案 2 :(得分: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