一、字符串处理
1. 长度
set str="abc"
write $L(str)
2. 查找字
w $FIND("123ab456","ab")
// 输出6
2. 截取
Set str=”abcd”
Set subStr=$E(str,2,3)
subStr: “cd”
3. 分割
M的特色
Set str=”abcd^123”
Set subStr=$P(str,”^”,2)
// subStr: “abcd”
Set subStr=”12”
Set str=”abcd^123”
Set $P(str,”^”,2)=subStr
// subStr: 12
4. 替换
a. $Replace
S newStr=$Replace(str,”xx”,”yy”)
b. $TRanslate,字符替换
5.转化为大写
$$ALPHAUP^SSUTIL4(str) // 支持中文
$ZCVT(string,”U/L/T”)转换成大小写,和title
6. 进制转化
$ZHEX 转化为十六进制 $factor $bit
7. $ZConvert 按照指定模式表示的字符
二、数值处理
1.是否是有效数值
因M中数值是按字符串存储的,因此常需要验证字符串是否为有效的数值
$ISVALIDNUM(str)
2.保留小数
w $fn(1.15,"",1)
//输出:1.2
3.取整:
s intValue=floatvalue\1
s intValue=$fn(floatvalue,"",0)
4.除法
// / 除 输出: 2.5
write 12/5
\ 取除数中的整数,输出: 2
write 12\5
5.取余
// 输出: 1
write 11/2
6.取绝对值
// 输出:12
write $ZABS(-12)
7.将字符串转化为数值
set str="123"
set num=+str
三、日期时间
M中日期、时间一般是分开处理的。日期以整形表示,从12/31/1840开始的天数; 时间是从当晶0点开始的秒数。
1.Int=>转字符
W ##class(web.DHCClinicCom).ConvertToDate(val)
W ##class(web.DHCClinicCom).ConvertToTime(val)
当日期时间:$HOROLOG,以","分隔,格式:日期,时间
w $zd($h,3) // 转化为yyyy-mm-dd 第二参数为格式类型
w $zt($p($h,”,”,2)) // 转化为HH:MM:SS
2.字符串=>Int
// 日期字符串=>int
W ##class(web.DHCClinicCom).ConvertToDateH(str)
// 时间字符串=>int
W ##class(web.DHCClinicCom). ConvertToTimeH(str)
// 将yyyy-mm-dd格式转化为整形格式类型
w $zdh("2019-05-22",3)
// 将HH:mm:ss格式转化为整形格式类型
w $zth(“12:00”)
3.显示带毫秒的时间
可用于计算执行时间
$ZTIMESTAMP
四、List操作
这里的List是指Cache数据库中存储数据时使用
// $ListBuild(element,…)使用括号中的参数产生一个列表。
set list=$ListBuild("a","b")
// $List(list,from[,to]) 返回列表中指定范围的元素。
write $List(list,1)
// 输出list长度
write $Length(list)
五、数学函数
函数名 | 说明 |
---|---|
$ZCOS(n) | 三角余弦函数 |
$ZCOT(n) | 三角余切函数 |
$ZCSC(n) | 三角余割函数 |
$ZARCCOS(n) | 反三角余弦函数 |
$ZARCSIN(n) | 反三角正弦函数 |
$ZARCTAN(n) | 反三角正切函数 |
$Random | 随机数 |
其他
是否是有效对象
$isobject(obj)