携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第39天,点击查看活动详情
第4讲 数据类型
CachéObjectScript是一种无类型语言。不必声明变量的类型。任何变量都可以有字符串、数值或对象值。
字符串
- 字符串是一组字符:字母、数字、标点符号等,由一组匹配的引号(
"")分隔。
s str = "this is a string"
w str,!
- 通过在字符串前面加上另一个双引号字符,可以将双引号字符作为文字包含在字符串中,除了双引号字符没有其他转义字符。
s str = "yaoxin name si ""姚鑫"""
w str,!
- 可以使用
_连接运算符将两个字符串连接成单个字符串,可以字符串中包含非打印字符。
s lf = $char(10,13)
s str = "yao" _ lf _ "xin"
w str,!
- 使用等于(
=)和不等于('=)运算符来比较两个字符串。字符串相等比较区分大小写。
w "yao" = "yao",!
w "xin" = "Xin",!
- 运算符比较字符串和数字时需要注意,因为比较是字符串比较,而不是数字比较。
w "-8" = ---0008.0000,!
w "-008.0" = -8,!
- 只有包含规范形式的数字的字符串才等于其相应的数字。(“
-0”不是规范数字。)
w "-0" = 0,!
w "-0" = -0,!
<、>、<=或>=运算符不能用于执行字符串比较。这些运算符将字符串视为数字,并始终执行数字比较。使用这些运算符进行比较时,将为任何非数字字符串分配数值0。
w "yx" > 0,!
w "1yx" > 0,!
w "y1x" > 0,!
- 字符串中连接
$char(0),显示相同,实则不相等。
s str1 = "姚" _ $char(0) _ "鑫"
w str1,!
s str2 = "姚鑫"
w str2,!
w str1 = str2,!
- 默认情况下启用长字符串串,则字符串的最大长度为
3,641,144个字符。如果禁用长字符串,则字符串的最大长度为32,767个字符。
w $SYSTEM.SYS.MaxLocalLength(),!
位串
- 位串表示具有布尔值的编号位的逻辑集合。字符串中的位从位号
1开始编号。任何未显式设置为布尔值1的编号位的计算结果为0。 - 将数字转换为位串,再还原为数字。
ClassMethod BitString()
{
s number = $random(32)
w "随机数为:" _ number,!
s bStr = $factor(number)
zw bStr
s count = $bitcount(bStr)
w "位串长度:" _ count,!
w "位串显示:"
for i = 1 : 1 : count {
w $bit(bStr, i)
}
w !
s decimal = 0
for i = count : -1 : 1 {
s bit = $bit(bStr , i)
if (bit) {
s decimal = decimal + $zpower(2, i - 1)
}
}
w "还原数字为:" _ decimal,!
}
- 将字符转为位串,再还原为字符。
ClassMethod CharBitString()
{
s str = "姚"
w "字符串为:" _ str,!
s number = $ascii(str)
w "随机数为:" _ number,!
s bStr = $factor(number)
zw bStr
s count = $bitcount(bStr)
w "位串长度:" _ count,!
w "位串显示:"
for i = 1 : 1 : count {
w $bit(bStr, i)
}
w !
s decimal = 0
for i = count : -1 : 1 {
s bit = $bit(bStr , i)
if (i = 2) {
s bit = 'bit
}
if (bit) {
s decimal = decimal + $zpower(2, i - 1)
}
}
w "还原数字为:" _ decimal,!
s target = $char(decimal)
w "目标字符串为:" _ target,!
}