java - 替换单词之间的下划线(reg.exp)

标签 java jquery regex xslt replace

我需要一个正则表达式来解决以下问题(也欢迎指向类似问题的链接、相关教程等):

"__some_words_a_b___" => "__some words a b___"
"____" => "____"
"some___words" => "some   words"

所以我希望单词之间的下划线替换为空格,并保留前导和尾随下划线。我发现了这个:

^[ \t]+|[ \t]+$

我想最有可能是这样的。我将在 jQuery、Java(stdlibs)以及 XSLT 中使用它。

添加: 句子不一定以下划线开头或结尾。句子也可能根本不包含下划线。多个下划线应呈现为多个空格

最诚挚的问候 莱塞·埃斯佩霍特

最佳答案

这应该在 JavaScript 中工作:

var newString = oldString.replace(/([^_].*?)_(?=[^_|^\s])/g,"$1 ");

编辑:如果字符串中已有空格,可能需要添加类似的内容:

var newString = oldString.replace(/([^_|\s].*?)_(?=[^_|^s])/g,"$1 ");

我忘记了任何其他边缘情况吗? :) 哦,是的,另一个边缘情况。如果后跟空格(如换行符、行尾等),请保留结尾下划线。

编辑:如果单词之间的下划线数量>1的替代解决方案

var arrayString = oldString.replace(/^(_+)(.*?)(_+)$/g,"$1;$2;$3");
var a = arrayString.split(";");
var newString = a[0]+a[1].replace(/_/g," ")+a[2];

关于java - 替换单词之间的下划线(reg.exp),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2403415/

相关文章:

c# - 我如何像 Environment.GetCommandLineArgs() 那样解析命令行参数?

java - 在 Android Studio 中添加新资源文件夹的正确方法?

jquery - 更改同位素滤镜动画效果

javascript - jQuery - 提交表单...但也传递提交输入名称和 ID

javascript - 如何将背景图像放在主体的背景图像上方?

javascript split() 数组包含

java - 对象化 : Use an entity key juste created

java - 如何正确排序包含字符串和数字的 ArrayList<String>?

java - 如何添加输入数字以消除重复的数字?

php - 为什么这个正则表达式会失败?