|
主题: 如何将字符串内容转化为属性列表?
|
 gwllb
职务:普通成员
等级:1
金币:0.0
发贴:91
注册:2000/12/1 15:19:02
|
#12004/1/13 9:09:52
比如,我有一个字符串,为 MyString="name="1.mp3" Mynum="1" MyText="text/1.txt"" 我需要自动将MyString中的内容转化为 [#name:"1.mp3",#Mynum:"1",#MyText:"text/1.txt"] 因为字符串MyString是变化的,所以不知道改怎么自动添加,或者说,是怎么去获取字符串中各个属性的值。
|
 wanlang
职务:普通成员
等级:1
金币:0.0
发贴:39
注册:2005/4/21 16:35:45
|
#22004/1/13 23:59:59
转过来倒是不难,关键是看你作什么用? 如果是属性列表可以用addprop来添加,用getprop或getpropat来获取值 我看你的意思可能会要用属性列表和线性列表混合用 线性列表的话就用append、add、addat来添加 用getone、getpos来获取值!
|
 gwllb
职务:普通成员
等级:1
金币:0.0
发贴:91
注册:2000/12/1 15:19:02
|
#32004/1/14 9:10:37
如何添加属性列表和线性列表就不用解说了。我所要知道的是怎么把"name="1.mp3" Mynum="1" MyText="text/1.txt"" 这一字符串中的三个属性的值取出来,因为这个字符串只是一个例子,我做的项目,此字符串中的属性的值是变化的
|
 wanlang
职务:普通成员
等级:1
金币:0.0
发贴:39
注册:2005/4/21 16:35:45
|
#42004/1/14 20:24:01
如果都那样格式的字符串的话, 你可以先取到“=”的位置 再根据“=”的位置不就可以获取到它的值了吗?
|
 gwllb
职务:普通成员
等级:1
金币:0.0
发贴:91
注册:2000/12/1 15:19:02
|
#52004/1/15 10:02:10
想到过,但是字符串中有3个或更多的“=”,用offset怎么去判断你要检测第几个"="的位置呢?现在问题已经解决,没用字符串的方式,用了笨办法,将所有属性都生成一个文本,再根据行去读相应文本行的内容。
|
 wanlang
职务:普通成员
等级:1
金币:0.0
发贴:39
注册:2005/4/21 16:35:45
|
#62004/1/16 22:40:17
用offset是只会获得在指定字符串的第一次出现的位置,所以是行不通的! 用下面这个函数可以获得字符串中所有的"=",这个函数只能相对于一个字符哦,它会返回一个位置列表
on startMovie me stringx="name=1.mp3 Mynum=1 MyText=text/1.txt" put Mulioffset("=",stringx) end
on Mulioffset str1,str2 strlist=[] repeat with i=1 to str2.length m=str2.char[i] if m=str1 then strlist.append(i) end if end repeat return strlist end
|
 wanlang
职务:普通成员
等级:1
金币:0.0
发贴:39
注册:2005/4/21 16:35:45
|
#72004/1/17 3:04:44
下面有个函数,方法比较笨:),而且你的格式不能错误,不能同时有两个空格存在,等号前后也不能有空格 on startMovie me stringx="name=1.mp3 Mynum=1 MyText=text/1.txt" put Mulioffset(stringx) end
on getstring str1 strlist1=[] strlist2=[] l=" " repeat with i=1 to str1.length m=str1.char[i] if m="=" and l<>m then strlist1.append(i) end if if m=" " and l<>m then strlist2.append(i) end if l=m end repeat if strlist2>=strlist1 then exit ch1_1=str1.char[strlist1[1]+1..strlist2[1]-1] ch2_1=str1.char[strlist1[2]+1..strlist2[2]-1] ch3_1=str1.char[strlist1[3]+1..str1.length] str=[#name:ch1_1,#myNum:ch2_1,#myText:ch3_1] return str end --[#name: "1.mp3", #mynum: "1", #mytext: "text/1.txt"]
|