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

How can replace any alphabetic characters (with or without accent) that precede underscore?

本文关键字:字符 任何字 何替换 替换 下划线      更新时间:2023-09-26
如何

替换仅在字符单独时下划线之前的任何字母字符(带或不带重音(?请用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 ";  

谢谢

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

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

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

适用于上述所有情况。

你试过任何代码吗?

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

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

可能最好使用正则表达式(我很糟糕(但是一个笨拙的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 将是格式化的结果

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

相关文章: