主题:MID$(a,b,c)
xinying2005
[专家分:0] 发布于 2007-07-24 11:01:00
MID$(a,b,c)其中的a,b,c代表什么含义?
回复列表 (共11个回复)
沙发
剑圣风暴 [专家分:450] 发布于 2007-07-24 11:13:00
a:字符串表达式
b:开始位置
c:长度
板凳
wzc1996 [专家分:1680] 发布于 2007-07-24 11:39:00
a:字符串变量
b:开始位置
c:长度
3 楼
xinying2005 [专家分:0] 发布于 2007-07-24 11:55:00
IF BIT%(q + 3) = 1 THEN
sbuf$(11 + q) = "Transistor #" + MID$(STR$(q), 2, 1) + " is blocking."
ELSE
sbuf$(11 + q) = "Transistor #" + MID$(STR$(q), 2, 1) + " is not blocking."
END IF
NEXT q
这其中的 MID$(STR$(q), 2, 1) 应该如何理解?
4 楼
剑圣风暴 [专家分:450] 发布于 2007-07-24 12:07:00
取STR$(q),从第2位开始,取1位。
5 楼
xinying2005 [专家分:0] 发布于 2007-07-24 12:29:00
q本来就一位啊 怎么从第二位开始取呢?
6 楼
moz [专家分:37620] 发布于 2007-07-24 13:03:00
str$(1) 得到的字符串应该是 " 1"
长度两位,前面有一个空格是符号位,
一般在数字转换字符串形式时,大多数都需要把前导空格去掉,
例如 ltrim$(str$(1234))
按照上面的 mid$(str$(1),2,1) 也能达到相同的效果.
只是假如是负数的话,会把负号也一起去掉.
假如 mid$( ) 的字符串只有一位,而从第二位取起,会得到一个空串,
如: mid$("1",2,1)
但,如果知道数值是一个一位的正整数,
也就是说只是一个数字.
用 chr$(48+q) 会更方便更高效.
7 楼
Matodied [专家分:7560] 发布于 2007-07-24 13:30:00
MID$(a, b, c)是从字符串a的左起第b个位置取c个字符,其中a是字符串类型。
如果要想取a的左起第b个字符到左起第c个字符之间的所有字符(c>b):
MID$(a, b, c-b+1)
8 楼
Matodied [专家分:7560] 发布于 2007-07-24 13:39:00
MID$还可以当作语句使用,格式为MID$(a, b, c) = d
作用是把字符串a的左起第b个字符开始的c个字符替换为字符串d。其中a是字符串变量,d是字符串。
但是有特殊情况:
(1)如果字符串d的长度大于c,则只取字符串d的前c个字符,后面的字符舍弃。如:
a$="11223344"
MID$(a$,4,3)="12345",执行后a$的值为11212344.
(2)如果d的长度小于c,则只替换(d的长度)个字符,如:
a$="abcdefg"
MID$(a$,3,3)="xy",执行后a$的值为abxyefg.
9 楼
xinying2005 [专家分:0] 发布于 2007-07-24 15:34:00
IF j% = 15104 THEN
IF mode%(4) = 28 THEN
mode%(4) = 12 'Q1 OFF
ELSE
mode%(4) = 28 'Q1 ON
END IF
ELSEIF j% = 15360 THEN
IF mode%(4) = 60 THEN
mode%(4) = 12 'Q2 OFF
ELSE
mode%(4) = 60 'Q2 ON
END IF
ELSEIF j% = 15616 THEN
IF mode%(4) = 92 THEN
mode%(4) = 12 'Q3 OFF
ELSE
mode%(4) = 92 'Q3 ON
END IF
ELSEIF j% = 15872 THEN
IF mode%(4) = 124 THEN
mode%(4) = 12 'Q4 OFF
ELSE
mode%(4) = 124 'Q4 ON
END IF
其中的j% = 15360 的值这么大 代表什么呀,还有 下一个的J 都比上一个的J 大256 有什么说法吗
10 楼
V2战警2 [专家分:390] 发布于 2007-07-24 15:45:00
(回答5楼的问题)如果开始位置超过了整个字符串的常度,取得的就是空串。哦,变量Q是数啊?是Q$吧?
[em18][em18]
我来回复