You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Sheets多词城市名提取大写首字母生成缩写的公式问题

多单词城市名首字母缩写实现方案

需求规则

  • 多单词城市名:提取大写首字母,生成点号分隔的首字母缩写
  • 单个单词城市名:保持原值不变

示例参考

输入

Rio de Janeiro
São Paulo
Osnabruck
Brøndby County

对应输出

R.J.
S.P.
Osnabruck
B.C.

现有实现卡点

已梳理基础实现逻辑:按空格拆分单词→移除拆分内容里的小写字母→用.拼接结果,初步公式如下:

=IF(FIND(" ",A1),JOIN(".",SPLIT(A1," ")),A1)

当前卡在移除小写字母步骤,已尝试的两种方案均存在缺陷:

  • 用SUBSTITUTE枚举所有小写字母替换为空:无法覆盖全量特殊小写字符(如北欧语的ø、葡萄牙语的ã等)
  • 用正则规则[^a-z]匹配保留非小写字母:仅能覆盖a-z范围的英文字符,同样无法识别其他语言的小写变音字符,会有字符残留

适配全拉丁语系字符的实现方案

不需要逐一枚举小写字母,直接利用Unicode正则属性\p{Ll}即可匹配所有语言的小写Unicode字母,覆盖英语、葡萄牙语、北欧语等所有拉丁语系的带变音符号小写字符,不会出现字符残留。

适配Google Sheets的公式

=IF(COUNTIF(A1,"* *")=0,A1,JOIN(".",QUERY(ARRAYFORMULA(REGEXREPLACE(SPLIT(A1," "),"\p{Ll}","")),"SELECT * WHERE Col1 <> ''"))&".")

公式逻辑说明:

  1. 先用COUNTIF判断单元格是否包含空格,无空格直接返回原城市名
  2. 有空格则先用SPLIT按空格拆分为独立单词
  3. 用REGEXREPLACE配合\p{Ll}规则,将每个单词里的所有小写字母替换为空,全小写的虚词(如de)会被替换为空值
  4. 用QUERY过滤掉替换后产生的空值
  5. 用.拼接剩余的大写首字母,末尾补.匹配输出格式

适配Excel 365的公式

=IF(ISERROR(FIND(" ",A1)),A1,TEXTJOIN(".",TRUE,REGEXREPLACE(TEXTSPLIT(A1," "),"\p{Ll}",""))&".")

逻辑和Sheets版本一致,用TEXTSPLIT做单词拆分,TEXTJOIN第二参数设为TRUE自动跳过空值,写法更简洁。

内容的提问来源于stack exchange,提问作者Digital Farmer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 08:30:48