【问题标题】:Escaping special characters in JavaScript在 JavaScript 中转义特殊字符
【发布时间】:2023-03-11 00:20:02
【问题描述】:

我需要一个 JavaScript 方法来转义所有不是 (a-z / A-Z / 0-9 / - / _) 的字符

如果字符是ø,则应替换为oe,如果是å,则替换为aa,等等……如果字符不在列表中,则应替换为下划线。

如果一行中有 2 个下划线 (__),则应将它们替换为单个下划线。

我需要在 JavaScript 和/或 PHP 中完成此操作。

【问题讨论】:

  • 坦克戴夫,我的英语不太好,但我在努力。 :)

标签: php javascript


【解决方案1】:
String.prototype.slugify = function(){
    return this.replace('ø','oe').replace('å','aa').replace(/\W/gi,'_').replace(/_+/g,'_');
}
var x = 'sdfkjshødfjsåkdhf#@$%#$Tdkfsdfxzhfjkasd23hj4rlsdf9';
x.slugify();

按照.replace('search','replace') 模式添加任意数量的规则。确保使用.replace(/\W/gi,'_').replace(/_+/,'_') 完成它,它将转换为 .还要确保以 UTF-8 格式提供它以适应特殊字符,例如 ø。

Strater 建议的替代版本:

String.prototype.slugify = function(){
    var replacements = {
        'ø': 'oe',
        'å': 'aa'
    }
    var ret = this;
    for(key in replacements) ret = ret.replace(key, replacements[key]);
    return ret.replace(/\W/gi,'_').replace(/_+/g,'_');
}

这个版本当然更加灵活和可维护。我会使用这个,尽管我保留了前一个迭代以供后代使用。好主意,斯特拉格!

【讨论】:

  • 另外,我认为您可能希望将 /g 标志添加到下划线折叠正则表达式中。
  • 在创建新的字符串操作函数时,我更喜欢扩展 String 对象以保留可链接性等。很好地抓住 /g 标志,我的错误!已编辑。
  • 对象我的意思是遍历一个对象以进行替换,例如:{ 'ø': 'oe', 'å': 'aa' }
  • 很好,它的帮助只是一个问题。 var 替换 = { 'ø': 'oe', 'Ø': 'OE', 'å': 'aa', 'Å': 'AA', 'æ': 'ae', 'Æ': 'AE ' } 变量 ret = str; for(key in replacements) { ret = ret.replace(key, replacements[key]); } document.getElementById( id ).value = ret.replace(/\W/gi,'').replace(/_+/g,'');当我运行它时,使用它(øøø)它的 make oe_ 替换为 oeoeoe 而不是 oe_ :/请帮助。
  • 你需要使用pastebin.com——几乎不可能读取像这样去掉换行符的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-16
  • 1970-01-01
  • 2011-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多