String.lengthメソッドで改行コードも含めた文字数を確認したい
こんにちは!エンジニアの増永です。Javaに限りませんがプログラミングしていると、文字列の長さを確認したくなることがあります。
たとえば、文字数制限があって文字数をチェックする必要がある場合などです。
この記事では、文字数を確認する方法をサクッと調べたい方に向けて、以下の内容で解説していきます。
- 文字列の長さを取得する方法
- 文字数制限などで使う場合の注意点
今回はStringクラスのlengthメソッドを使った確認方法をわかりやすく解説します!
なお、Javaの記事については、こちらにまとめています。
JavaのString.lengthとは
JavaのStringクラスのlengthメソッドは、主に指定した文字列の文字数をカウントするためのメソッドです。
lengthメソッドを使用することにより、入力した文字数のチェックなどを行うことができます。
lengthメソッドは以下のように記述します
String.length()
String.lengthで文字列の長さを取得する
ここではStringクラスのlengthメソッドの基本的な使い方を見ていきましょう。
Stringクラスのlengthメソッドは、以下のように使用します。
以下のサンプルでは郵便番号の文字数を取得しています。
public class Stringlength { public static void main(String[] args) { // 変数の宣言 String postCode = "1112222"; // 文字数を出力 System.out.println("郵便番号の文字数は" + postCode.length() + "です。"); } }
実行結果:
郵便番号の文字数は7です。
Stringで宣言した変数にlengthメソッドを使用すれば、「1112222」の文字列の長さが7だとわかりました。
String.lengthを文字数制限などで使う場合の注意点
lengthメソッドを使用して返ってきた値が必ずしも得たい数字とは限らない場合があります。
ここでは、文字列の長さを確認する上での注意点について解説していきます!
全角と半角での文字数の扱い
lengthメソッドで取得した場合、全角、半角で文字数は変わってくるのでしょうか?
以下のサンプルでは全角、半角で宣言された住所の番地の文字数を取得しています。
public class Stringlength { public static void main(String[] args) { // 変数の宣言 String jusho1 = "兵庫県神戸市1234"; String jusho2 = "兵庫県神戸市1234"; // 文字数を出力 System.out.println("住所(全角)の文字数は" + jusho1.length() + "です。"); System.out.println("住所(半角)の文字数は" + jusho2.length() + "です。"); } }
実行結果:
住所(全角)の文字数は10です。 住所(半角)の文字数は10です。
Stringで宣言された変数の場合、全角、半角どちらの文字数も同じ10であることがわかりました。
バイト数と文字数の違い
プログラムを学習していると「バイト(byte)」に関わることもあります。
文字数とバイト数では結果が変わってきます。
なお、バイト数はString.getBytes().lengthを使って取得します。
以下のサンプルでは同じ文字列に対して文字数とバイト数を取得しています。
public class Stringlength { public static void main(String[] args) { // 変数の宣言 String jusho1 = "兵庫県神戸市1234"; // 文字数を出力 System.out.println("住所の文字数は" + jusho1.length() + "です。"); System.out.println("住所のバイト数は" + jusho1.getBytes().length + "です。"); } }
実行結果:
住所の文字数は10です。 住所のバイト数は22です。
文字数では10、バイト数では30と結果が異なることがわかりました。プログラミングする際はどちらを取得したいのか(取得して何をしたいのか)を意識することが重要です。
なおバイト数はShift-JISやUTF-8などの「文字コード」でも変わります。
改行コードを含む文字数
文字列の中には改行することもあります。目には見えませんがプログラムでは「改行コード」というものが入っているため、出力する際きちんと整形されるのです。
この改行コードは文字数としてカウントされるのでしょうか?ちなみに、Windowsの改行コードは「\r\n」です。
(バックスラッシュ)ではなく¥(円マーク)でも同じ意味です。
以下のサンプルでは改行コードを含んだ文字数を取得しています。
public class Stringlength { public static void main(String[] args) { // 変数の宣言 String jusho1 = "兵庫県神戸市\r\n1234"; // 文字数を出力 System.out.println("住所は" + jusho1 + "です。"); System.out.println("住所の文字数は" + jusho1.length() + "です。"); } }
実行結果:
住所は兵庫県神戸市 1234です。 住所の文字数は12です。
改行コード「r」「n」それぞれで1文字としてカウントされたため12となりました。
改行コードもカウントされるため文字数制限のある入力の場合、「改行コードもカウントされます」という注意書きを設けたり、プログラム内で改行コードを取り除いてカウントするといった考慮が必要になります。
まとめ
今回はlengthメソッドを使った文字列の長さを取得する方法を説明しました。プログラミングにおいて文字列(String)はよく使う変数です。
文字列の文字数チェックを誤るとデータの整合性が合わなくなるため、次作業のテストでエラーが発生することがあります。
もしlengthメソッドの使い方を忘れてしまったら、この記事を思い出して下さい!