文字列の一部の抜き出し 〜JavaとJavaScript〜
忘れた頃に使うことになり、JavaとJavaScriptの違いを忘れて結局調べ直すことが多いので、簡単にまとめておく。
<Java>
一部を抜き出した新しい文字列を取得するには、Stringクラスのsubstringメソッドを使う。
public String substring(int beginIndex, int endIndex)
Javaのsubstringのポイントは、
・indexとは配列と同じように対応している
・実際に抜き出されるのは、beginIndexからendIndex-1まで
ということ。つまり、
String str = "Hello"; String subStr = str.substring(0, str.length());
だと、substr = “Hello”のままである(str.length() = 5なので、5-1=4、indexの0から4まで)。
もし末尾の文字だけ消したいのであれば、
String str = "Hello"; String subStr = str.substring(0, str.length()-1);
が正解。これでsubStr = “Hell”になる。
<JavaScript>
JavaScriptでも、同じくsubstringメソッドを使う(他にsubStrメソッド、sliceメソッドを使う方法もある)。
Javaのsubstringのポイントは、
・indexは、文字の間の”しきり”に対応している
・実際に抜き出されるのは、beginIndexからendIndexまで
この違いのせいで一見混乱するが、実は書き方はJavaと同じになる
var str = "Hello"; var subStr = str.substring(0, str.length);
だと、substr = “Hello”のままである(str.length = 5で、しきりindexの0から5まで)。
もし末尾の文字だけ消したいのであれば、
var str = "Hello"; var subStr = str.substring(0, str.length-1);
が正解。これでsubStr = “Hell”になる。
というわけで、結果としては同じ書き方になるが、考え方の違いを理解しておかないと、例えばfor文の中でindexを更新しながら文字列を抜き出すときなどに、思い通りの結果が得られなくなってしまう。
ディスカッション
コメント一覧
まだ、コメントがありません