我想在HTML链接文本中显示"Open Lock"字符.
如果我直接执行它会正确显示<a id="myId">🔒</a>,但我发现没有办法用jQuery .text()函数改变它,就像在:
$("#myID").text(openLockText);
Run Code Online (Sandbox Code Playgroud)
我应该在openLockText中添加什么?
如何使用JavaScript删除表情符号代码?我以为我使用下面的代码照顾它,但我仍然有像这样的字符.
function removeInvalidChars() {
return this.replace(/[\uE000-\uF8FF]/g, '');
}
Run Code Online (Sandbox Code Playgroud) 为什么这样做:
<p id="emoji">😄</p>
Run Code Online (Sandbox Code Playgroud)
而这不是:
document.getElementById("emoji").innerHTML = String.fromCharCode(parseInt('1f604', 16));
Run Code Online (Sandbox Code Playgroud) 我正在开发一个推特应用程序,偶然发现了utf-8(16)的世界.似乎大多数javascript字符串函数对代理对都是盲目的.我必须重新编码一些东西才能让它具有广泛的字符意识.
我有这个函数来解析字符串到数组,同时保留代理对.然后我将重新编码几个函数来处理数组而不是字符串.
function sortSurrogates(str){
var cp = []; // array to hold code points
while(str.length){ // loop till we've done the whole string
if(/[\uD800-\uDFFF]/.test(str.substr(0,1))){ // test the first character
// High surrogate found low surrogate follows
cp.push(str.substr(0,2)); // push the two onto array
str = str.substr(2); // clip the two off the string
}else{ // else BMP code point
cp.push(str.substr(0,1)); // push one onto array
str = str.substr(1); // clip one from string
}
} // loop
return cp; …Run Code Online (Sandbox Code Playgroud) (您需要Firefox或Safari才能在代码中看到表情符号.)
我想带一串表情符号并用个别角色做点什么.
在JavaScript中,"?".length == 13因为"?"长度为1,其余为2.所以我们做不到
s = string.split("");
c = [];
c[0] = s[0]+s[1];
Run Code Online (Sandbox Code Playgroud)
将JavaScript字符串拆分为"字符"可以简单地完成,但如果您关心Unicode(并且您应该关心Unicode)则会出现问题.
JavaScript本身将字符视为16位实体(UCS-2或UTF-16),但这不允许BMP(基本多语言平面)之外的Unicode字符.
为了处理BMP之外的Unicode字符,JavaScript必须考虑" 代理对 ",它本身并不是这样做的.
我正在寻找如何通过codepoint拆分js字符串,无论代码点是否需要一个或两个JavaScript"字符"(代码单元).
根据您的需要,按代码点拆分可能还不够,您可能希望拆分" 字形集群 ",其中集群是基本代码点,后跟所有非间距修改符代码点,例如组合重音符号和变音符号.
出于这个问题的目的,我不需要通过字形集群进行拆分.
在JavaScript中,我可以这样做:
foo = "\u2669" // 1/4 note
Run Code Online (Sandbox Code Playgroud)
但我不能这样做
foo = "\u1D15D" // full note -five hex digits
Run Code Online (Sandbox Code Playgroud)
它将被解释为"\ u1D15"后跟"D"
这有什么变通方法吗?
更新2012-07-09:ECMAScript Harmony的提议现在包括对所有Unicode字符的支持.
众所周知,表情符号最多可编码为3或4个字节,因此它可能会占用我的字符串中的2个符号.例如'wew'.length = 7我想在我的文本中找到这些符号,并将它们替换为依赖于其代码的值.读SO,我带着unicode插件来到XRegExp库,但还没找到如何使它工作的方法.
var str = 'wew';// \u1F601 symbol
var reg = XRegExp('[\u1F601-\u1F64F]', 'g'); // /[?1-?F]/g -doesn't make a lot of sense
//var reg = XRegExp('[\uD83D\uDE01-\uD83D\uDE4F]', 'g'); //Range out of order in character class
//var reg = XRegExp('\\p{L}', 'g'); //doesn't match my symbols
console.log(XRegExp.replace(str, reg, function(match){
return encodeURIComponent(match);// here I want to have smth like that %F0%9F%98%84 to be able to map anything I want to this value and replace to it
}));
Run Code Online (Sandbox Code Playgroud)
我真的不想强行查找我的范围内的字符序列.有人可以帮我找到用regexp做的方法.
EDITED刚想 出了一个枚举所有表情符号的想法.比野蛮力更好,但仍然在寻找更好的主意
var …Run Code Online (Sandbox Code Playgroud) 我试图在用户可见的字形中获取javascript字符串的长度,即忽略组合字符(和代理对?).这是可能的,如果是的话,我该怎么做呢?
我们在项目中使用了dojo工具包,但任何通用的JavaScript解决方案都会很棒.
我有unicode字符和JS的问题.我有一个书签,以帮助我键入奇怪的unicode字符.
我"".charCodeAt(pos)用来获取unicode代码来重现相同的奇怪字符,String.FromChardCode反之亦然.但是,对于具有unicode代码> 55349的字符,我遇到了一个问题:http:
//en.wikipedia.org/wiki/Blackboard_bold
例如,对于Blackboard bold X(120169):
如果我试图从代码中获取它:
alert(String.fromCharCode(120169));
Run Code Online (Sandbox Code Playgroud)
如果我尝试直接从JS获取代码,我会获得另一个角色,同样的事情:
s="";
alert(s.charCodeAt(0))
alert(s.charCodeAt(1))
Run Code Online (Sandbox Code Playgroud)
结果:55349 56655
有一种方法可以处理这些字符吗?