天各一方 发表于 2024-10-10 17:22:55

【闭贴】lisp编译器中如何替换²上标问题

本帖最后由 天各一方 于 2024-10-11 14:42 编辑

    我经常在CAD中标记文本信息,会用到大量文本公式,为了不二次输入信息,决定在CAD中进行计算汇总。

    现在出了点状况:文本中有1㎡+2㎡、2m³+3m³,涉及上标了。每次用find命令预处理后,再进行文本过滤和四则运算。
    需要在lisp里,直接把字母和上标删掉留下1+2,2+3的字样就可以了。
    问题:lisp编译器不支持输入上标,没办法删除。有什么办法删除上标吗?
    目前思路是把字母放到表里面,删除一定位数的表元素,从而删除上标。但是,感觉对新手不太友好,我不太会。有简单的办法吗?万能的明友啊,求助!

ashan 发表于 2024-10-10 17:33:50

用ascii函数逐个字符判断,除了位于48-57区间或等于42、43、45、47的字符外其余全部删掉,这样保留下来的就是纯数字和四则运算符

天各一方 发表于 2024-10-10 17:57:33

ashan 发表于 2024-10-10 17:33
用ascii函数逐个字符判断,除了位于48-57区间或等于42、43、45、47的字符外其余全部删掉,这样保留下来的就 ...

有一个问题,上标数字也留下了。

你有种再说一遍 发表于 2024-10-10 20:18:41

天各一方 发表于 2024-10-10 17:57
有一个问题,上标数字也留下了。

上标不就是格式而已吗?

天各一方 发表于 2024-10-11 08:20:40

你有种再说一遍 发表于 2024-10-10 20:18
上标不就是格式而已吗?

我初学,并不会判断上标格式,有办法吗?

ashan 发表于 2024-10-11 09:16:07

天各一方 发表于 2024-10-10 17:57
有一个问题,上标数字也留下了。

可以提取2次,第一次以四则运算符为分隔符,逐个字符判断,等于42/43/45/47时结束,提取出第一个字符串,然后第2次仍然对第一次提取出的字符串逐个字符判断,如果是48-57区间的保留,出现第一个非48-57区间的字符时结束

天各一方 发表于 2024-10-11 14:42:25

ashan 发表于 2024-10-11 09:16
可以提取2次,第一次以四则运算符为分隔符,逐个字符判断,等于42/43/45/47时结束,提取出第一个字符串, ...

好的,我试试,早上写了点,感觉多重循环判断,有点绕,我感觉我逻辑这块真不行。一点点熬吧。闭贴算了。

e2002 发表于 2024-10-13 16:45:53

因为你的上标,下标这些都是固定的字符串,那就遍历搜索查找这些字符串,只要找到就去除,最后剩下的就是你需要的内容了,最后再解析为计算式。

天各一方 发表于 2024-10-14 08:15:54

e2002 发表于 2024-10-13 16:45
因为你的上标,下标这些都是固定的字符串,那就遍历搜索查找这些字符串,只要找到就去除,最后剩下的就是你 ...

嗯感谢回复,我进一步是想把各种上下标都去除,一个一个写估计要弄个表比较好。
页: [1]
查看完整版本: 【闭贴】lisp编译器中如何替换²上标问题