【发布时间】:2016-02-10 13:21:10
【问题描述】:
这里尝试在正则表达式匹配删除大写字符后将大写字符转换回大写:
var text = 'Test Text';
var stringToStyle = 'test';
var update = "<span style='color:blue' >" + stringToStyle + "</span>";
var regexp = new RegExp(stringToStyle, 'gi');
var updated = text.replace(regexp, update);
function replaceAt(text , index, character) {
return text.substr(0, index) + character + text.substr(index+character.length);
}
function getPositionsOfUppercaseChars(text) {
var p = [];
var i = text.length;
while (i--) {
if(text[i] == text[i].toUpperCase() && text[i].trim() != ''){
p.push(i)
}
}
return p;
}
console.log(updated)
var positions = getPositionsOfUppercaseChars(text)
console.log(positions)
var positions 包含要转换的字符的位置
为大写,我将遍历更新的文本并替换以前的字符
大写。但是我需要在位置上添加一个偏移量,因为 [5,0] 不正确。
更新:
更新后的 var 应该是 <span style='color:blue' >Test</span> Text 而不是
<span style='color:blue' >test</span> Text
这似乎是一种复杂的解决方法,有没有更优雅的方法?
【问题讨论】:
-
如果
<span style='color:blue' >test</span> Text是所需的输出,那么您的代码已经在执行此操作,您面临的问题是什么? -
@gurvinder372 请查看问题更新,我打错了
-
这是否意味着我一开始就建议
var update = "<span style='color:blue' >$&</span>";时是对的?见this fiddle。 -
@WiktorStribiżew 是的
标签: javascript regex