从应用程序开发过渡到Web开发,所以我仍然想要解决所有问题。
如何仅从Wordpress更改页面标题和菜单中的中文字符颜色?它应该在css中完成,但我不确定如何以这种方式检测汉字。任何见解将不胜感激!
答案 0 :(得分:1)
CSS不是一种编程语言,因此无法检测中文字符 - 这必须通过使用正则表达式按照Unicode字符范围过滤页面上的单个字符来完成,并选择那些属于CJKUI块。此范围为very well discussed in another SO question here。总结范围:
\u9FFF
至\u3400
\u4DFF
至\u20000
\u2A6DF
至\uF900
\uFAFF
至\u2F800
\u2FA1F
至<span lang="zh">
第一个范围通常就足够了,但是如果你正在处理包含罕见日期字符的中文文本,那么扩展你的选择以包括完整的CJKUI范围是有利的。
但是,通过在大量文本上使用正则表达式,您正在执行昂贵的匹配操作 - 对于您确定中文字符将会出现的文本的小片段仍然可行。诀窍是迭代地对每个字符detect the Unicode range (it is asked in the Python tag but also works for JS)进行迭代,并将其包含在lang
元素中(使用[...-...]
属性在语义上有效且推荐)与特定类一起使用,以便您可以对其进行样式化无论如何你想使用CSS。
对于正则表达式模式,诀窍是使用字符范围选择器:[\u4E00-\u9FFF]
(阅读更多here)。对于最简化的CJKUI集,您可以使用[\u4E00-\u9FFF\u3400-\u4DFF\u20000-\u2A6DF\uF900-\uFAFF\u2F800-\u2FA1F]
。但是,如前所述,如果您想真正匹配所有可能的中文unicode字符,则必须使用完整集:$(function() {
$('h1, p').each(function() {
var text = $(this).html();
$(this).html(text.replace(/([\u4E00-\u9FFF])/g, '<span lang="zh">$1</span>'));
});
});
span[lang="zh"] {
color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1>Title 馦騜 here</h1>
<p>Lorem ipsum 跣鉌 dolor sit 嬞 amet, consectetur adipiscing elit. 蔍 Aliquam dignissim justo metus, nec rhoncus diam 娀 mollis sed. Pellentesque eu 庣 neque sit amet sapien accumsan accumsan 餳 vel nec quam. Sed rutrum 嬚 id justo quis pretium. Vestibulum 鍹 eu ligula id magna vehicula rhoncus nec a tortor. Integer id 楋dolor vitae mi gravida euismod ac eget 馻 dui. Pellentesque eu enim at erat 嬔 pellentesque posuere. Duis ligula magna, pretium sed 騧 sagittis eu, mollis a nibh. Integer ultrices 噈 molestie scelerisque. Maecenas 羭聧蔩 eget nulla sodales, pulvinar magna non, 嫶 vestibulum odio. Sed a luctus mi. In nec 烒 cursus justo. Nunc lacinia 烢 massa a eros semper scelerisque. Fusce dictum lacus 珛 nec ipsum 駷pellentesque, id finibus sapien lacinia.</p>
enum EnumActions{
SHIFT,
REDUCE,
ACCEPT,
GOTO ,
ERROR_A
};
int main(){
enum EnumActions __actionType;
__actionType = EnumActions::SHIFT; //this is giving an error
__actionType = SHIFT;//this works fine
}
最好的解决方案是使用regex预处理HTML /用户输入一次,这将与上面相同,这样就可以避免运行时正则表达式包装中文字符。