String
進行字元計數,將表情符號計數為 2
我有以下功能:
function getCharacterCount(string str) constant returns (uint length) { uint i=0; bytes memory string_rep = bytes(str); while (i<string_rep.length) { if (string_rep[i]>>7==0) i+=1; else if (string_rep[i]>>5==0x6) i+=2; else if (string_rep[i]>>4==0xE) i+=3; else if (string_rep[i]>>3==0x1E) i+=4; else //For safety i+=1; length++; } }
現在它完全適用於所有 utf-8 字元串,因此
getCharacterCount(test1234)
返回 8,但getCharacterCount(test1234😂)
在我希望它返回 10 的地方返回 9。我找不到任何可行的解決方案來解決這個問題。
您為每個字元添加一次長度,因此無論哪種情況代表表情符號,您都需要
length++;
在這種情況下以及最終使用length++;
編輯:
使用
else if (string_rep[i]>>3==0x1E) { i+=4; length++; }
對我有用。