我是电源制造商的新手,我正在尝试使用替换功能。我需要用〜来替换字符串中的一个aposthope('),但是它给了我一个错误“函数的错误参数列表:replace”。
Signature = "Gagandeep S'ingh"
Signature = Replace (Signature , "'", "~'")
请随时提供帮助。
答案 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