"__some words a b___" "____" => "___-6ren">
gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 19:24:08 28 4
gpt4 key购买 nike

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

"__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/

28 4 0