有下面一个字符串,我想用vim替换单词中的空格,但是单词与单词之间的空格需要保留下来。源字符串:
Timb erland Men's 6" Pr emium Bo ot
Timberl and Women's Wate rproff Boot
Timberland Men's Fiel d Boot
Tim berland PRO Premium Boo t正确的字符串:
Timberland Men's 6" PremiumBoot
Timberland Women's WaterproffBoot
Timberland Men's Field Boot
Timberland PRO Premium Boot规律如下:
如果空格两边的字母都是小写字母,那么这个空格应该去掉:[a-z]\s[a-z] ---> [a-z][a-z]
如果空格两边字母有一个是大写的或者数字,那么这个空格是单词与单词之间的分隔符,应该保留。已经尝试了的方案:
1,全文替换空格,这样会把单词与单词之间的分隔符也替换掉。
2,用vim里面的%s/\<[a-z]\s[a-z]\>//g,失败正则表达式vim空格替换
Timb erland Men's 6" Pr emium Bo ot
Timberl and Women's Wate rproff Boot
Timberland Men's Fiel d Boot
Tim berland PRO Premium Boo t正确的字符串:
Timberland Men's 6" PremiumBoot
Timberland Women's WaterproffBoot
Timberland Men's Field Boot
Timberland PRO Premium Boot规律如下:
如果空格两边的字母都是小写字母,那么这个空格应该去掉:[a-z]\s[a-z] ---> [a-z][a-z]
如果空格两边字母有一个是大写的或者数字,那么这个空格是单词与单词之间的分隔符,应该保留。已经尝试了的方案:
1,全文替换空格,这样会把单词与单词之间的分隔符也替换掉。
2,用vim里面的%s/\<[a-z]\s[a-z]\>//g,失败正则表达式vim空格替换
解决方案 »
- 请教高手:如何在chrome中打开新页面?页面的url是在点击之后动态生成的。
- js精度问题,求高手指点???
- 无聊搞了个在线javascript压缩的工具
- 限制文本框只能输入数字(整数、小数),而不能输入其他字符(空格、标点符号、英文、中文及其他字符等等)
- 在aptana中快速建立表格的工具栏怎样打开?
- 一个简单问题,哪位大哥帮帮忙啊??~谢谢~在线等
- 对于用bgsound或embed播放wav文件,如何在其播放完成后触发一个事件??
- 怪现象
- 诚意寻求FLASH、JS、网页设计和美工高手
- 如何判断每个Frame是否已经装入
- <如何系统的学习JavaScript> 进来看看 散分帖
- jquery动画为什么延迟执行?
怎么区分wor d 和 word and
所有单词都是首字母大写的,你可以再看一下例子,比如word and,实际上是Word And,如果Word中有空格的话,应该是Wor d,这个规律是严格遵守的。谢谢你
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script type="text/javascript">
var arr=["Timb erland Men's 6\" Pr emium Bo ot","Timberl and Women's Wate rproff Boot","Timberland Men's Fiel d Boot","Tim berland PRO Premium Boo t"];
var reg=/[a-z]\s+[a-z]/g;
for(var i in arr){
arr[i]=arr[i].replace(reg,change);
}
for(var i in arr){
alert(arr[i]);
}
function change(a){
return a.replace(/\s+/,"");
}
</script>
</head><body>
</body>
</html>
这样试试
"Timberl and Women's Wate rproff Boot\n"+
"Timberland Men's Fiel d Boot\n"+
"Tim berland PRO Premium Boo t"
var reg = /[a-z]+(\s+)[a-z]/g;
function replace(str){
if(reg.test(str)){
str = str.replace(reg,function(){
return arguments[0].replace(/\s+/,"");
});
str = replace(str);
}
return str;
}
s = replace(s).replace(/\s{2,}/g," ");
console.log(s);
"Timb erland Men's 6\" Pr emium Bo ot\n"
+ "Timberl and Women's Wate rproff Boot\n"
+ "Timberland Men's Fiel d Boot\n"
+ "Tim berland PRO Premium Boo t"
);var r = /([a-z])[ ]+([a-z])/g;console.log(s.replace(r, '$1$2'));