文字のカウントについて

文字を「str文字」という変数(String型)に格納しています。
ただこの文字をシステムに登録しようとすると、システム上、半角40文字までしか入らない仕様になっています。また全角でも所定の文字を超えると「最大桁数は半角40文字までです」とエラーが出てしまいます。
str文字は全角も半角も混合に入っている可能性があるので、全角は半角としてカウントしたいのですが、文字数をカウントする方法を教えてください。

こんにちは

str文字.Length

はいかがでしょうか?

全角だった場合、半角の半分である20桁しか入らないようです。
これだと、半角も全角も1文字としてカウントしてしまいますか。
システム上、半角は40文字、全角は20文字しか入らないようです。
str文字が例えば、「あいうえおaiueo」の時もあるので、こういう時にエラーが出ないように事前に文字列が超過していないかカウントしたいです

こんにちは

str文字.Length

は半角全角を問わず1文字としてカウントします。

全角文字を2文字とするのであれば、例えば対象文字列をSift_JISのバイト列として取得し、その長さを評価すれば良いかと思います。(Shift_JISにない文字が入力された場合は、うまくいかないかもしれませんが大抵は問題ないかと思います)

System.Text.Encoding.GetEncoding("Shift_JIS").GetBytes(str文字).Length

ありがとうございました。できました!

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.