持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第5天,点击查看活动详情
一点说明
首先在Caché ObjectScript Functions中方法是不分大小写的.所以$CHAR $C或者$char $c都是一样的。下文统一用$c。
具体使用方法
$c的用法是将整数值表达式转换成相应的 ASCII 或 Unicode 字符。
如$c(1)返回的字符是 SOH(start of headline).
再如$c(65)返回的字符是大写 A.
以下是几种特殊的用法:
1) 整数值表达式为逗号分隔的列表,返回对应相应的字符列表。
如$c(65,67)返回的字符是大写AC.
2) 整数值表达式最大可以到65535
大于 65535 的值则返回空字符串。
3) 整数值表达式为负值,此时也返回空字符串。
如:w $c(-1),!
那在整数值表达式为逗号分隔的列表中,$c也自动忽略负数。
如:w $c(65,-66,67),! //AC
4) 整数值表达式等于960,返回 π 字符串。
相关函数
$ASCII函数是$CHAR的逆函数,用法是把 ASCII 转换成对应的整数值。 如:
w $c(45),! //-
w $a($c(45)),! //45
转换大小写方法
以下是转换大小写方法,其中转换成全小写时,输入Type为"l"。
其中涉及到的函数有:
-
$MATCH方法为正则表达方法,下节可以讲一下。 -
$l方法是获取字符串长度的方法。
/// w ##class(User.Test).test8("111")
/// w ##class(User.Test).test8("sAdzbFsgh") SADZBFSGH
/// w ##class(User.Test).test8("sAdzbFsgh","l") sadzbfsgh
ClassMethod test8(Str As %String, Type As %String = "U")
{
q:$d(Str)=0
if ($MATCH(Str,"[a-zA-Z]+")=0){
w "必须是全英文字符",!
q ""
}
set ret=""
For i = 1:1:$l(Str) {
if ((Type="L")&&($a(Str,i)<90)){
set ret=ret_$c($a(Str,i)+32)
}elseif ((Type="U")&&($a(Str,i)>96)){
set ret=ret_$c($a(Str,i)-32)
}else{
set ret=ret_$c($a(Str,i))
}
}
q ret
}
代码地址 test7 test8