第五十七章 Caché 函數大全 $REPLACE 函數 第五十七章 Caché 函數大全 $REPLACE 函數 大綱 描述 示例

第五十七章 Caché 函數大全 $REPLACE 函數

返回一個新字符串,該字符串由輸入字符串中的子字符串替換子字符串組成。

大綱

$REPLACE(string,searchstr,replacestr,start,count,case)

參數

  • string 源字符串。它可以是數值,字符串文字,變量名稱或任何有效的ObjectScript表達式。如果string是一個空字符串(“”),則$REPLACE返回一個空字符串。
  • searchstr 要在字符串中搜索的子字符串。它可以是數值,字符串文字,變量名稱或任何有效的ObjectScript表達式。如果searchstr是一個空字符串(“”),則$REPLACE返回字符串。
  • replacestr 替換子字符串替換了字符串中searchstr的實例。它可以是數值,字符串文字,變量名稱或任何有效的ObjectScript表達式。如果replacestr是一個空字符串(“”),則$REPLACE返回已刪除出現的searchstr的字符串。
  • start 可選-字符串中開始子字符串搜索的字符計數位置。字符串字符從1開始計數。值0,負數,非數字字符串或空字符串等於1。如果省略,則假定爲1。如果start> 1,則返回以該字符開頭的字符串的子字符串,並執行子字符串替換(如果有)。如果start > $LENGTH(string),則$REPLACE返回空字符串(“”)。
  • count 可選-要執行的子字符串替換的數量。如果省略,則默認值爲-1,這意味着執行所有可能的替換。值0,非-1的負數,非數字字符串或空字符串等價於0,這意味着不執行任何替換。如果指定了start,則count從起始位置開始子字符串替換。
  • case 可選—布爾值標誌,指示字符串中searchstr的匹配是否區分大小寫。 0 =區分大小寫(默認)。 1 =不區分大小寫。任何非零數字都等於1。任何非數字值都等於0。如果未指定start或count,則可以提供佔位符逗號。

描述

$REPLACE函數返回一個新字符串,該字符串由輸入字符串的逐個字符串替換組成。它在字符串中搜索searchstr子字符串。如果$REPLACE找到一個或多個匹配項,它將用replacestr替換searchstr子字符串,並返回結果字符串。 replacestr參數值可以比searchstr長或短; replacestr可能是一個空字符串。

默認情況下,$REPLACE從字符串的開頭開始,並替換每個searchstr實例。可以使用可選的start參數在字符串中的指定字符計數位置開始比較。返回的字符串是字符串的子字符串,該字符串的子字符串從起始位置開始,並從該位置替換searchstr的每個實例。

可以使用可選的count參數來僅替換指定數量的匹配子字符串。

默認情況下,$REPLACE子字符串匹配區分大小寫。可以使用可選的case參數來指定不區分大小寫的匹配。

注意:因爲$REPLACE可以更改字符串的長度,所以不應在編碼的字符串值(例如ObjectScript $List%List對象屬性)上使用$REPLACE

REPLACE和TRANSLATE

$REPLACE執行字符串對字符串的匹配和替換。 $TRANSLATE執行字符對字符的匹配和替換。 $REPLACE可以將一個或多個字符的單個指定子字符串替換爲另一個子字符串。 $TRANSLATE可以用對應的指定新字符替換多個指定字符。默認情況下,這兩個函數都會替換字符串中所有匹配的實例。

$REPLACE匹配默認情況下區分大小寫,但可以不區分大小寫地調用; $TRANSLATE匹配始終區分大小寫。 $REPLACE可以指定匹配的起點和/或要執行的替換次數; $TRANSLATE替換源字符串中的所有匹配項。

示例

以下示例顯示了使用$REPLACE的兩種方法。第一個$REPLACE不會更改輸入字符串的值。第二個$REPLACE通過將輸入字符串值設置爲等於函數的返回值來更改它:

/// d ##class(PHA.TEST.Function).REPLACE()
ClassMethod REPLACE()
{
    SET str="The quick brown fox"
    // 創建一個新字符串,不更改str值
    SET newstr=$REPLACE(str,"brown","red")
    WRITE "source string: ",str,!,"new string: ",newstr,!!
    // 創建一個新的字符串並將字符串替換爲新的字符串值
    SET str=$REPLACE(str,"brown","silver")
    WRITE "revised string: ",str
}
DHC-APP>d ##class(PHA.TEST.Function).REPLACE()
source string: The quick brown fox
new string: The quick red fox
 
revised string: The quick silver fox

在下面的示例中,$REPLACE的調用匹配並替換子字符串的所有實例以及子字符串的前兩個實例:

/// d ##class(PHA.TEST.Function).REPLACE1()
ClassMethod REPLACE1()
{
    SET str="1110/1110/1100/1110"
    WRITE !,"before conversion  ",str
    SET newall=$REPLACE(str,"111","AAA")
    WRITE !,"after replacement  ",newall
    SET newsome=$REPLACE(str,"111","AAA",1,2)
    WRITE !,"after replacement  ",newsome
    SET newsome2=$REPLACE(str,"111","AAA",2,2)
    WRITE !,"after replacement  ",newsome2
}

DHC-APP>d ##class(PHA.TEST.Function).REPLACE1()
 
before conversion  1110/1110/1100/1110
after replacement  AAA0/AAA0/1100/AAA0
after replacement  AAA0/AAA0/1100/1110

在以下示例中,$REPLACE的調用執行區分大小寫而不區分大小寫的匹配,並替換字符串中所有出現的情況:

/// d ##class(PHA.TEST.Function).REPLACE2()
ClassMethod REPLACE2()
{
    SET str="Yes/yes/Y/YES/Yes"
    WRITE !,"before conversion  ",str
    SET case=$REPLACE(str,"Yes","NO")
    WRITE !,"after replacement  ",case
    SET nocase=$REPLACE(str,"Yes","NO",1,-1,1)
    WRITE !,"after replacement  ",nocase
}
DHC-APP>d ##class(PHA.TEST.Function).REPLACE2()
 
before conversion  Yes/yes/Y/YES/Yes
after replacement  NO/yes/Y/YES/NO
after replacement  NO/NO/Y/NO/NO

下面的示例比較$REPLACE$TRANSLATE函數:

/// d ##class(PHA.TEST.Function).REPLACE3()
ClassMethod REPLACE3()
{
    SET str="A mom, o plom, o comal, Pomama"
    WRITE !,"before conversion  ",str
    SET s4s=$REPLACE(str,"om","an")
    WRITE !,"after replacement  ",s4s
    SET c4c=$TRANSLATE(str,"om","an")
    WRITE !,"after translation  ",c4c
}

DHC-APP>d ##class(PHA.TEST.Function).REPLACE3()
 
before conversion  A mom, o plom, o comal, Pomama
after replacement  A man, o plan, o canal, Panama
after translation  A nan, a plan, a canal, Panana

在下面的示例中,$REPLACE的四參數形式僅返回從起點開始的字符串部分,並執行字符串對字符串的替換:

/// d ##class(PHA.TEST.Function).REPLACE4()
ClassMethod REPLACE4()
{
    SET str="A mon, a plon, a conal, Ponama"
    WRITE !,"before start replacement ",str
    SET newstr=$REPLACE(str,"on","an",8)
    WRITE !,"after start replacement  ",newstr
}
DHC-APP>d ##class(PHA.TEST.Function).REPLACE4()
 
before start replacement A mon, a plon, a conal, Ponama
after start replacement  a plan, a canal, Panama
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章