V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
lalacat2i
V2EX  ›  问与答

如何批量将文本中的中文大写数字替换为阿拉伯数字?

  •  
  •   lalacat2i · 128 天前 · 1141 次点击
    这是一个创建于 128 天前的主题,其中的信息可能已经有所发展或是发生改变。
    大家好,我是小白,不懂技术,一般遇到问题靠谷歌。但是这个问题不知如何是好。

    最近在看民法典的法条,为了阅读的舒适,希望把大写数字替换为阿拉伯数字,比如第一千一百四十一条替换为第 1141 条。请问大家有什么简单易行的方法吗?
    第 1 条附言  ·  128 天前
    • 经指正,我的标题应修改为

    如何批量将文本中的中文数字替换为阿拉伯数字?

    • 感谢大家提供的帮助
    17 条回复    2021-08-22 01:23:08 +08:00
    lalacat2i
        1
    lalacat2i  
    OP
       128 天前
    抱歉,描述错误,应该是替换为阿拉伯数字。
    zxCoder
        2
    zxCoder  
       128 天前
    数字的位数不会很多,都是有固定的书写格式的吧,感觉 if else 就可以
    sunjiayao
        3
    sunjiayao  
       128 天前   ❤️ 1
    正则应该可以搞定。但我不会正则
    nuistzhou
        4
    nuistzhou  
       128 天前 via iPhone
    针对每个长度的大写数字写正则好了
    TuYanzheng
        6
    TuYanzheng  
       128 天前 via Android
    @zxCoder 证明:一切数字都可以用不超过二十个汉字表示
    反证:假设存在集合 A 表示不能用二十个以内汉字表示的数,则取最小的数 a,可以表示为“最小的不能用二十个以内汉字表示的数”,与集合描述相反 所以,一切数字都可以用二十个以内汉字表示。
    LiYanHong
        7
    LiYanHong  
       128 天前
    不会编程的话,总共就十个字,查找替换都比你提个问快
    SevnChen
        8
    SevnChen  
       128 天前
    https://github.com/silencesmile/money_to_word/blob/master/money_to_word.py

    给一个示例,主要是还要考虑个十百千万这种表示位的
    SevnChen
        9
    SevnChen  
       128 天前
    @LiYanHong 虽说不难,但也不是替换 10 个字就能解决的问题。
    对比一下“一千一百四十一”和“一千一百四十”
    shakoon
        10
    shakoon  
       128 天前
    楼主你说的这种字符是中文数字,不是中文大写数字。贰仟伍佰壹拾这种才是中文大写。
    emonc
        11
    emonc  
       128 天前
    正则走两遍,先把单位去掉,再把汉字换成阿拉伯数字。应该就能解决大部分情况
    l9rw
        12
    l9rw  
       128 天前   ❤️ 1
    不会编程的话可以用 word 。
    先 ctrl + H 打开替换窗口,点更多,勾选 [使用通配符] ,然后查找框里输入"第[零一二三四五六七八九十百千万]{1,10}条",不带引号,替换为里面留空,点最下面格式,随便选一个特殊格式。
    选中自定义格式的 [第一条] ,点开始->选择->选择格式相似的文本,选中以后点开始->定义新编号格式->确定就好了
    Maboroshii
        13
    Maboroshii  
       128 天前   ❤️ 1
    要不反向思维试一下?
    先做一个把阿拉伯数字翻译成汉字的方法,1001 -> 一千零一 , 这个应该好实现吧?
    然后提前把 0 ~ 9999999 全部翻译好,最后反查替换。
    lalacat2i
        15
    lalacat2i  
    OP
       128 天前
    @zjj19950716 感谢,看上去是我不会描述问题才不会搜索信息

    @l9rw 感谢,我稍后尝试一下

    @shakoon 感谢你的指正

    @SevnChen 多谢提供范例

    @tinytoadd 感谢提供思路
    MiketsuSmasher
        16
    MiketsuSmasher  
       125 天前
    可以考虑一下这个项目,https://github.com/Ailln/cn2an
    用这个批量生成所有出现过的数字,然后再批量替换
    lalacat2i
        17
    lalacat2i  
    OP
       103 天前
    @MiketsuSmasher 感谢,最近没上才看到你的建议
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2344 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 13:51 · PVG 21:51 · LAX 05:51 · JFK 08:51
    ♥ Do have faith in what you're doing.