When the string contains emoji, we use String.prototype.length
cannot get the characters count correctly! Such as:
'👦🏿'.length
return 4, it should be 1!'👨👩👦'.length
return 8, it alse should be 1!
EmojiCharString is based on a RegExp to work with JavaScript String's unicode problem. It can solve the problem above.
❗️Note that it is not for good performance but for accuracy, because it uses a complex RegExp to analyze the string.
Using NPM, install EmojiCharString, and add it to your package.json
dependencies.
npm install emojicharstring --save
And then you can import it
// CommonJS
const EmojiCharString = require('EmojiCharString');
// or ES6
import EmojiCharString from 'EmojiCharString'
Or include the file in your HTML page using the following tags:
<script src="/path/to/dist/EmojiCharString.min.js"></script>
var emojiStr = new EmojiCharString('👦🏿')
Get the string's length correctly.
var emojiStr = new EmojiCharString('👦🏿')
var len = emojiStr.length // 1
Get the string you pass in.
var emojiStr = new EmojiCharString('hello')
var str = emojiStr.toString() // hello
Reverse the string in place.
var emojiStr = new EmojiCharString('👦🏿👨👩👦')
console.log(emojiStr.reverse()) // '👨👩👦👦🏿'
The substring() method returns a subset of a string between begin index and end index
Param | Type | Default | Description |
---|---|---|---|
begin | Number |
0 | begin index |
end | Number |
none | end index |
var emojiStr = new EmojiCharString('👨👨👦 our family 我们一家 ❤️')
console.log(emojiStr.substring(2, 5)) // 'our'
The substr() method return the characters in a string beginning at the specified location through the specified number of characters.
Param | Type | Default | Description |
---|---|---|---|
begin | Number |
0 | Location at which to begin extracting characters |
len | Number |
none | The number of characters to extract |
var emojiStr = new EmojiCharString('👨👨👦 our family 我们一家 ❤️')
console.log(emojiStr.substr(2, 5)) // 'our f'
MIT