|
sungmoo介绍的indexnot(s1,s2)函数:英文直翻就是return the (position) INDEX of the (1st) character in s1 that does NOT appear in s2
反馈s1字串中第一个没有在s2字串中出现的字符(在s1中)的位置,例如:
. display indexnot("xxab","ysxb") s1里第一个没出现的是a,所以反馈a在s1中的位置
3
. display indexnot("xxab","ysxt") 虽然b也没出现在s2里,但是s1里第一个没出现的是a,所以反馈a在s1中的位置
3
如果s1字串中的全部字符都出现在s2中(不管在s2中的位置和顺序,只要有就成),那么反馈0。
. display indexnot("ab","tab") 全出现了 也就是说 index not appear = FALSE 所以 回馈0
0
. display indexnot("ab", "carribean") 全出现了 ,不管在s2中的顺序
0
. display indexnot("ab","tt") 都没出现,所以反馈第一个字符的位置,1
1
如果不好理解的话,也可以用regexm(s,re) —— 这个函数help file里的例子挺多的:
s: string; re: regular expression, 如果re在s里面,或是以某种形式存在,则回馈1,否则0
. display regexm("carribean","car")
1
. display regexm("carribean","ab")
0
所以此例可以这么办,生成个st-dummy:
gen st=regexm(stockname,"ST") // ST出现在名字中任何地方都回馈1,否则0。. display regexm("adfsST","ST")
1
另外如果强调是在字串头部出现,加^号,即:
. display regexm("adfsST","^ST")
0
. display regexm("STabc","^ST")
1
或者indexnot(s1,s2):
gen st=indexnot("ST",stockname)==0 //双否即肯,
如果stockname含有ST,那么st回馈1,其它0
|