Javascript 除首字母缩略词外,在空白处拆分短语
希望在空白处拆分短语,除非有可能的首字母缩略词。例如: “弗兰克永远为我工作”->弗兰克,永远为我工作Javascript 除首字母缩略词外,在空白处拆分短语,javascript,regex,Javascript,Regex,希望在空白处拆分短语,除非有可能的首字母缩略词。例如: “弗兰克永远为我工作”->弗兰克,永远为我工作 另一种选择是“压扁”缩写词->“Frank永远在IBM工作”对于您的特定示例,\b([A-Z])(?=[A-Z]\b)似乎工作得很好: s=“弗兰克永远在IBM工作” p=s.replace(/\b([A-Z])(?=[A-Z]\b)/g,“$1”) document.write(p)对于第一个请求,使用此模式((?:[A-Z])+)|注意,末尾有一个空格 并替换为$1, 然后通过替换\s?
另一种选择是“压扁”缩写词->“Frank永远在IBM工作”对于您的特定示例,
\b([A-Z])(?=[A-Z]\b)
似乎工作得很好:
s=“弗兰克永远在IBM工作”
p=s.replace(/\b([A-Z])(?=[A-Z]\b)/g,“$1”)
document.write(p)
对于第一个请求,使用此模式((?:[A-Z])+)|
注意,末尾有一个空格并替换为
$1,
然后通过替换
\s?,\s?
w/,
使用
split
的功能,该功能允许您通过将拆分元素放置在捕获组中来保留拆分元素,并使用首字母缩略词来拆分除空格之外的元素
var separator = /\s+|\b([A-Z\s]*[A-Z])\b/;
这将在结果中放入一些未定义项,因此需要将它们过滤掉
function split(str) { return str.split(separator).filter(Boolean); }
split("Frank worked at I B M forever")
> ["Frank", "worked", "at", "I B M", "forever"]
要删除首字母缩略词字母之间的空格,请执行以下操作:
function squish(str) { return str.replace(/\s/g, ''); }
function split(str) { return str.split(separator).filter(Boolean).map(squish); }
split("Frank worked at I B M forever")
> ["Frank", "worked", "at", "IBM", "forever"]
此regexp的可读版本:
Split on
white space
OR
Between words, capturing as a group
optional capital letters or whitespace
followed by a capital letter
有关拆分功能的详细信息,请参阅:
如果分隔符
是包含捕获括号的正则表达式,则每次匹配分隔符
,捕获括号的结果(包括任何未定义的结果)都会拼接到输出数组中
这些首字母缩略词总是大写吗?@hwnd可能不是。为什么在缩写词中间有空格?@安德鲁姆,因为这是外部数据格式化的一种方式。在“I”和“M”之后,您可能无法使用弹性搜索和一些图书馆叶不想要的空间。因此,我的意见是修剪上面的额外空间。