<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,}
互いに続く少なくとも 2 つの大文字にのみ一致します。/\b[A-Z]+\b/g
別の方法として、 などの単語を除外したい場合に使用できますHELlo
。位置を取得したら、さまざまなアプローチを使用して HTML コードを接続/作成できます$('<div/>').append(...)
。