Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var my_string = "🐍"; // 蛇の絵文字
- var str_length = my_string.length;
- console.log(str_length); // 2
- var my_string = "🐍";
- var str_length = my_string.length - (my_string.split(/[uD800-uDBFF][uDC00-uDFFF]/g).length - 1);
- print(str_length); // 1
- var my_string = "🐍";
- var str_length = my_string.length - (my_string.match(/[uD800-uDBFF][uDC00-uDFFF]/g)||[]).length;
- print(str_length); // 1
- str_length = [...my_string].length
- var GraphemeBreaker = require('grapheme-breaker');
- // 日本の国旗
- // http://www.taishukan.co.jp/kokugo/webkoku/series003_11.html
- var c = String.fromCodePoint(0x1F1EF, 0x1F1F5);
- console.log(c);
- // バリアント
- // http://unicode.org/Public/UNIDATA/StandardizedVariants.html
- var c2 = String.fromCodePoint(0x267F, 0xFE0F);
- console.log(c2);
- // Unicode 8.0 で対応予定
- // VI 型の肌色の少年
- // http://www.unicode.org/reports/tr51/tr51-2.html#Diversity
- // var c3 = String.fromCodePoint(0x1F466, 0x1F3FF);
- // console.log(c3);
- var str = c + c2;
- // 拡張書記素クラスターの数
- console.log(GraphemeBreaker.countBreaks(str));
- var length = str.length;
- var previous = 0;
- var current = 0;
- while (current < length) {
- previous = current;
- current = GraphemeBreaker.nextBreak(str, previous);
- console.log(str.slice(previous, current));
- }
- var c = "u267F" + "uFE0F".repeat(10000);
- console.log(1 === GraphemeBreaker.countBreaks(c));
- var c = String.fromCodePoint(0x1F1EF, 0x1F1F5);
- var c2 = String.fromCodePoint(0x267F, 0xFE0F);
- var str = c + c2;
- console.log(2 === graphemeLength(str, ['ja-JP']));
- function graphemeLength(str, locales)
- {
- var it = new Intl.v8BreakIterator(locales, {type: 'character'});
- it.adoptText(str);
- var length = 0;
- var previous = 0;
- var current = it.first();
- while (current !== -1) {
- current = it.next();
- if (current === -1) {
- break;
- }
- previous = current;
- ++length;
- }
- return length;
- }
- Array.from("𠮷野家").length
- // => 3
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement