0

我有一个<h2>基于图像的替代文本生成的标签。我想为文本的大写部分添加样式。

我的计划是使用 javascript / jquery 查找大写文本并将其包装在<strong>标签中,然后使用 css 对其进行样式设置。

任何想法如何做到这一点?

谢谢!

4

3 回答 3

4

sometext.match(/[A-Z]+/g)给你一个字符串中所有大写文本的数组,所以循环添加样式。

要匹配至少 2 个大写字符,请使用.match(/([A-Z]+){2}/g)

要使用(例如)在字符串中包围长度 >= 2 的所有大写字符串部分,请<b></b>使用:

sometext.replace(/([A-Z]+){2}/g,function(a){return '<b>'+a+'</b>';});
于 2012-06-07T11:04:17.813 回答
1
function findUC() {
    var h2 = $('h2').text();
    var exploded = h2.split(' ');
    var pattern = new RegExp('[^A-Z]');
    var i;
    var style = '';
    for (i = 0; i < exploded.length; i++) {
       if (!exploded[i].match(pattern)) {
           style += '<span style="color:blue;">' + exploded[i] + '<span>';
       } else {
           style += exploded[i];
       }
    }
    $('h2').text(style);
}
findUC();​

这将对您有所帮助。根据您的要求进行修改。工作小提琴在这里

对于您提到的要求,我正在编辑此答案。

function findUC() {
var h2 = $('h2').text();
var exploded = h2.split(' ');
var pattern = new RegExp('[^A-Z]');
var i, j;
var style = '';
var character = '';
for (i = 0; i < exploded.length; i++) {
    if (!exploded[i].match(pattern)) {
        var firstletter = exploded[i].substr(0,1);
        var lastletter = exploded[i].substr(1, exploded[i].length);
        style += firstletter;
        style += '<span style="color:blue;">' + lastletter + '<span>';
    } else {
        style += " "+exploded[i]+" ";
    }
}


   $('h2').text(style);
}
findUC();​

我在上一条评论中提到了小提琴。试试看。

编辑 3:正如你在评论中提到的,我修改了小提琴:试试这个小提琴

于 2012-06-07T11:17:54.130 回答
0

您可以使用正则表达式来查找大写段落。只是一些正则表达式,例如/[A-Z]{2,}/g. 由于{2,}这只会匹配至少两个彼此跟随的大写字符。作为替代方案,/\b[A-Z]+\b/g如果您想排除诸如HELlo. 获得职位后,您可以使用不同的方法来连接/创建 HTML 代码,例如$('<div/>').append(...).

于 2012-06-07T11:08:54.523 回答