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

时间:2016-09-14 08:56:47

标签: javascript regex

如果角色是独自一人,我怎样才能替换下划线前面的任何字母字符(有或没有重音)?请用JS代码替换Desired result。

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 ";  

谢谢,

3 个答案:

答案 0 :(得分:1)

正则表达式替换的简单用法是这样的: str.replace(/(\b\w)\_/g,"$1'")

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

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

适用于上述所有情况。

答案 1 :(得分:0)

可能最好使用正则表达式(我很糟糕) 但是一种hacky 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()

y将是格式化结果

-Edit-修复了评论中突出显示的错误。

答案 2 :(得分:0)

您尝试过任何代码吗?

您可以使用indexOF获取_和空格

的char位置
var n = str.indexOf("_");
var x = str.indexOf(" ");