第五十七章 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
。
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