Javascript 如何替换下划线前面的字母字符(带或不带重音)?

Javascript 如何替换下划线前面的字母字符(带或不带重音)?,javascript,regex,Javascript,Regex,仅当字符单独存在时,如何替换下划线前面的字母字符(带或不带重音)?请用JS代码替换所需结果 var str = "c_est son avis "; //Desired result: str = "c'est son avis "; var str = "cc_est son avis "; //Desired result: str = "cc_est son avis "; var str = "Je pense que c_est son avis "; //De

仅当字符单独存在时,如何替换下划线前面的字母字符(带或不带重音)?请用JS代码替换所需结果

var str = "c_est son avis ";  
//Desired result:
str = "c'est son avis ";  

var str = "cc_est son avis ";  
//Desired result:
str = "cc_est son avis ";  

var str = "Je pense que c_est son avis ";  
//Desired result:
str = "Je pense que c'est son avis ";  

var str = "Je pense que cc_est son avis ";  
//Desired result:
str = "Je pense que cc_est son avis ";  
谢谢,

使用正则表达式可能是最好的(我很烂) 但是,一个黑客JS的方式做这件事会像

var x = str.split('_');

for ( var i=0 ; i<x.length ; i++ ){
  if (x[i].length == 1){
  x[i] = x[i]+"'";
  } else if (i < x.length-1){ 
  console.log( i);

  x[i] = x[i] + "_"
  }

}

var y = x.toString()
var x=str.split(“"”);
对于(var i=0;i您是否尝试过任何代码

您可以使用indexOF来获取u和空格的字符位置

var n = str.indexOf("_");
var x = str.indexOf(" ");

正则表达式替换的简单用法如下:
str.replace(/(\b\w)\\ug,“$1”)

如果有一个字母
\w
)和一个下划线
\\u
),则它在单词的行间匹配(
\b
),然后替换为捕获组1
(\b\w)
是替换字符串中的
$1
)和撇号

您需要捕获组来保留匹配模式的一部分(假设
c_est
应保留为
c'est
,您需要保留
c
,否则将与正则表达式的其余部分一起更改)


适用于上述所有情况。

试试regex101.com,它们将生成一个简单的替换代码。试试这个regex听起来像是你需要一个单词边界、一个字母匹配字符类和
。围绕字母模式设置一个捕获组,并替换为对组+撇号的反向引用。@感谢regex sam但是“cc_est son avis”变为坏结果“cc'est son avis”。@WiktorStribiżew,您的答案的JS正则表达式代码是什么?谢谢它能工作。只需考虑在数组转换变量y=x.toString()后用“”替换“,”。