哈喽,诸君安。笔者在查找有关正则表达式的命令时,发现了几个有趣的命令,有关于罗马数字、阿拉伯数字以及十进位数字之间的转换,今天小编就给大家介绍一下这几个命令。 罗马数字转十进位数字-fromroman 1.fromroman命令语法结构如下: fromroman romanvar [if] [in], generate(numvar) [re(regex)] 其中,romanvar是含有罗马数字的变量;gen(numvar)表示生成一个名称为numvar的十进位数字变量;[re(regex)]为正则表达式选项,说明fromroman可以结合正则表达式使用。 2.罗马数字介绍: (1)相同的数字连写、所表示的数等于这些数字相加得到的数、如:Ⅲ=3; (2)小的数字在大的数字的右边、所表示的数等于这些数字相加得到的数、 如:Ⅷ=8、Ⅻ=12; (3)小的数字(限于 I、X 和 C)在大的数字的左边、所表示的数等于大数减小数得到的数、如:Ⅳ=4、Ⅸ=9; (4)正常使用时、连写的数字重复不得超过三次; (5)在一个数的上面画一条横线、表示这个数扩大 1000 倍。 3.例子说明: 我们手动输入几个罗马数字,程序如下: clear set more off input str10 roman 'V I' 'V ii' 'v iii' 'IX' 'X' 'CVI' 'CVII' 'CVIII' 'CIX' 'CX' end 运行结果如下: 上图是列举的是10个罗马数字,下面用fromroman命令把其转换为十进位数字,程序如下: ·fromroman roman ,gen(v1) 运行结果如下: 新生成的变量v1就是罗马数字对应的十进位数。需要注意的是: (1)使用fromroman函数,如果罗马数字中有小写字母(如第2、3行),将会把小写字母变为大写字母识别,也就是说用fromroman函数将罗马数字转为十进位数时,是不区分大小写的。 (2)用fromroman函数,会忽略所有空格。例如第1、2、3行中,罗马数字VI、VII、VIII中间有一个或多个空格,而这些空格在转换时都会被忽略掉,因此,它们并没有影响上述的转换结果。 [re(regex)]选项代表正则表达式,假如你只想把以“V”开头或者以“C”开头且以“X”结尾的罗马数字转换为十进位数字,那么这时候就得用到正则表达式了,程序如下: ·fromroman roman ,gen(v2) re(^V) ·fromroman roman ,gen(v3) re(^C.+I$) 运行结果如下: 其中,“^V”表示匹配以“V”开头的罗马数字,元字符“^”是一个位置元字符,表示匹配字符串的开头位置;“^C.+I$”表示匹配以“C”开头且以“X”结尾的罗马数字,元字符“$”也是一个位置元字符,表示匹配字符串的结尾位置,“.+”表示一个多多个任意字符串。 十进位数转罗马数字-toroman 1.toroman命令语法结构如下: toroman numvar [if] [in], generate(romanvar) [lower] 其中,numvar是含有十进位数的变量;gen(romanvar)表示生成一个名称为romanvar的罗马数字的变量; [lower]是将大写罗马数字改为小写。 2.例子说明: 我们输入十进位数字1-10,然后用toroman函数将其转换为罗马数字,程序如下: clear set more off input num 1 2 3 4 5 6 7 8 9 10 end toroman num ,gen(roman1) toroman num ,gen(roman2) lower 运行结果如下: 通过toroman命令,我们将十进位数转换为了罗马数字(对应变量roman1、roman2),这里需要注意: (1)加上lower之后,所有的罗马数字都将变为小写; (2)负数、0、小数是不能被转为罗马数字的。 罗马数字转为阿拉伯数字- romantoarabic 1.romantoarabic命令语法结构如下: romantoarabic romanvar [if exp] [in range] , generate(arabicvar) 其中,romanvar是含有罗马数字的变量;gen(arabicvar)表示生成一个名称为arabicvar的阿拉伯数字(默认为十进位制,事实上romantoarbic命令和fromroman命令得到的结果是一样的,都是十进位制的阿拉伯数字)的变量。 2.例子说明: 我们依然手动输入10个罗马数字,然后用romantoarabic命令将其转为阿拉伯数字。 程序如下: ·romantoarabic roman ,gen(arabicvar) 显然,romantoarabic命令在转换时也是不区分大小写的。 以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。 应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~ 文字编辑:徐苾雯 技术总编:刘贝贝 |
|