我有一个非常奇怪的开箱即用的问题,但这是有充分理由的。
如果我有一个变量,例如:
var myText = "Select an option, and we'll update you.";
我需要将其更改为:
"Se~lect an option, and we'll up~date you.";
现在符号无关紧要。我只需要对数据库相关的单词使用任何类型的特殊字符。选择,更新,计数等。但我也想选择一个典型的人在打字时不常使用的角色。
我希望有一种方法可以将这些字符插入到指定字词列表中,如果它们存在于变量中。
过程:
用户以在变量中捕获val()的形式输入注释。 然后取变量并在这些单词中插入一个特殊字符。
在SQL级别上,我在使用replace解析这些字符之前将它们插入到数据库中。
非常感谢你......
答案 0 :(得分:0)
如果您绝对不能修复此问题,您可以将注释编码为JSON并用其unicode转义序列表示每个字符:
function unicode_stringify(s) {
var result = [];
for (var i = 0; i < s.length; i++) {
result.push('\\u' + ('0000' + s.charCodeAt(i).toString(16)).slice(-4));
}
return '"' + result.join('') + '"';
}
在您的服务器上对其进行解码,它应该可以正常工作:
> unicode_stringify('SELECT * FROM comments')
""\u0053\u0045\u004c\u0045\u0043\u0054\u0020\u002a\u0020\u0046\u0052\u004f\u004d\u0020\u0063\u006f\u006d\u006d\u0065\u006e\u0074\u0073""
> JSON.parse(unicode_stringify('SELECT * FROM comments'))
"SELECT * FROM comments"
请仅将此作为最后手段使用。
答案 1 :(得分:0)
也许这样的事情应该给你一个开始(如果你真的必须)。
的Javascript
var words = ["select", "update", "count"];
function modify(text) {
words.forEach(function (word) {
text = text.replace(new RegExp("\\b" + word + "\\b", "gi"), function(match) {
var insertAt = Math.floor(match.length / 2);
return match.slice(0, insertAt) + "~" + match.slice(insertAt);
});
});
return text;
}
console.log(modify("Select an option, and we'll update you. Count. Select an option, and we'll update you."));
输出
Sel~ect an option, and we'll upd~ate you. Co~unt. Sel~ect an option, and we'll upd~ate you.
在 jsfiddle
上更新优化
的Javascript
var words = ["select", "update", "count"],
regexs = words.map(function (word) {
return new RegExp("\\b" + word + "\\b", "gi");
});
function modify(text) {
regexs.forEach(function (regex) {
text = text.replace(regex, function (match) {
var insertAt = Math.floor(match.length / 2);
return match.slice(0, insertAt) + "~" + match.slice(insertAt);
});
});
return text;
}
console.log(modify("Select an option, and we'll update you. Count. Select an option, and we'll update you."));
在 jsfiddle
上