新しいものを表示

Rustの場合は
let text = "pͪoͣnͬpͣoͥnͭpͣa͡inͥ";
let count = text.graphemes(true).count();

で、10が返ってくるっぽい><

Pythonの場合は外部のライブラリに頼らないと厳密な文字数カウントはできないらしい・・・><(いろいろ試してできなくてCopilotさんに聞いた><)

よくわかんないけど、結論としては、Rubyで文字数をカウントしたいのであれば、UTF-8のstringにした上でgrapheme_clusters.sizeを使えって事っぽい・・・?><

C# の場合は、StringInfo.LengthInTextElementsを使えばおk><

s="pͪoͣnͬpͣoͥnͭpͣa͡inͥ"
s.encode("UTF-16").grapheme_clusters.size;
→40

????????><;

s="pͪoͣnͬpͣoͥnͭpͣa͡inͥ"
s.encode("UTF-8").grapheme_clusters.size;
→10

参考文献><;
Ruby で文字数を数える - Qiita
qiita.com/Nabetani/items/93e9a

Ruby

s="pͪoͣnͬpͣoͥnͭpͣa͡inͥ"
s.encode("UTF-8").size;
→19
s.encode("UTF-16").size;
→40

どういうことなの・・・?><;

haraita-i部分はオマケ(?)であって独立した文字じゃないのか・・・><

C# で、pͪoͣnͬpͣoͥnͭpͣa͡inͥ で試したら、
String.Length
19

StringInfo.LengthInTextElements
10

UTF8.GetBytes().Length
28

になった><

C# は常にstringがUTF-16なのでそういう混乱起きなそう><
System.Console.WriteLine("𠮷野家".Length);
UTF-16のCharの数なので「4」

System.Console.WriteLine(new System.Globalization.StringInfo("𠮷野家").LengthInTextElements);
TextElementの数は「3」
System.Console.WriteLine(Encoding.UTF8.GetBytes("𠮷野家").Length);
UTF-8のバイト列の長さでは「10」

orange さんがブースト

C# の場合どうなんだろうと思って調べてみたら、text elementsって表現してた><

StringInfo.LengthInTextElements Property (System.Globalization) | Microsoft Learn learn.microsoft.com/en-us/dotn

"The number of base characters, surrogate pairs, and combining character sequences in this StringInfo object."

orange さんがブースト

にしても UTF-n の # of code unit を「文字数」と表現するのは典型的な良くない表現では……

スレッドを表示
orange さんがブースト

「文字数」は code unit を数えているということでいいんですか、だったらバイト数数えてるのと大差なくない? (過言)

orange さんがブースト

つちよしはUTF-16はサロゲートペアの2文字に化けるよ

スレッドを表示
orange さんがブースト

String#encode (Ruby 3.3 リファレンスマニュアル)
docs.ruby-lang.org/ja/latest/m

> encode(encoding, **options) -> String

String#length (Ruby 3.3 リファレンスマニュアル)
docs.ruby-lang.org/ja/latest/m

> 文字列の文字数を返します。

おいおいおい何もわかんねえぞ

orange さんがブースト
orange さんがブースト
orange さんがブースト

Rubyならどっちもおっけー!!

$ ruby -e 's="𠮷野家";p s.encode("UTF-8").size;p s.encode("UTF-16").size'
3
4

神宮外苑再開発 “人権に悪影響の可能性”国連の作業部会 公表 | NHK | 国連 www3.nhk.or.jp/news/html/20240

05月26日
静岡県知事選 出口調査の結果|NHK 静岡県のニュース www3.nhk.or.jp/lnews/shizuoka/

古いものを表示
:realtek:

思考の /dev/null