我正在尝试编写一个java代码,其中包含一个包含表情符号的utf8字符串,我想用文本替换该表情符号。 例如:
我有这样的文字:طلبتمنهممبالغكبيرةلإتمامدراستهم
我希望它像这样: grinningFaceطلبتمنهممبالغكبيرةلإتمامدراستهم
我试过了:
function styleFooter() {
var body = DocumentApp.getActiveDocument();
var foot = body.getFooter().getParagraphs(); // gets a list of your footer paragraphs
var style = {};
style[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = DocumentApp.HorizontalAlignment.CENTER;
style[DocumentApp.Attribute.FONT_FAMILY] = 'Helvetica Neue';
style[DocumentApp.Attribute.FONT_SIZE] = 9;
// iterates each of your footer paragraphs
foot.forEach(function(element) {
element.setAttributes(style);
})
}
但它不起作用,该怎么做?
答案 0 :(得分:4)
你的问题是表情符号不在Basic Multilingual Plane中,因为它的代码大于U + FFFF。 Java字符只有16位长,因此只有BMP中的字符才使用一个java字符。 BMP之外的字符以UTF16编码。
unicode表情符号是GRINNING FACE字符U + 1F600。它的utf8编码为0xf0,0x9f,0x98,0x80
,其UTF-16编码(如Jon Skeet在其评论中所述)0xd83d, 0xde00
。这意味着""
的内部Java表示形式为"\ud83d\ude00"
,正如调试器可以显示的那样。
所以你的代码应该是:
string.replaceAll("\ud83d\ude00", "grinningF");
或
string.replaceAll("", "grinningF");
完全一样。