我有一个<h2>
基于图像的替代文本生成的标签。我想为文本的大写部分添加样式。
我的计划是使用 javascript / jquery 查找大写文本并将其包装在<strong>
标签中,然后使用 css 对其进行样式设置。
任何想法如何做到这一点?
谢谢!
我有一个<h2>
基于图像的替代文本生成的标签。我想为文本的大写部分添加样式。
我的计划是使用 javascript / jquery 查找大写文本并将其包装在<strong>
标签中,然后使用 css 对其进行样式设置。
任何想法如何做到这一点?
谢谢!
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>';});
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:正如你在评论中提到的,我修改了小提琴:试试这个小提琴
您可以使用正则表达式来查找大写段落。只是一些正则表达式,例如/[A-Z]{2,}/g
. 由于{2,}
这只会匹配至少两个彼此跟随的大写字符。作为替代方案,/\b[A-Z]+\b/g
如果您想排除诸如HELlo
. 获得职位后,您可以使用不同的方法来连接/创建 HTML 代码,例如$('<div/>').append(...)
.