Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 除首字母缩略词外,在空白处拆分短语_Javascript_Regex - Fatal编程技术网

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”之后,您可能无法使用弹性搜索和一些图书馆叶不想要的空间。因此,我的意见是修剪上面的额外空间。