文字列の一部の抜き出し 〜JavaとJavaScript〜

忘れた頃に使うことになり、JavaとJavaScriptの違いを忘れて結局調べ直すことが多いので、簡単にまとめておく。

<Java>

一部を抜き出した新しい文字列を取得するには、Stringクラスのsubstringメソッドを使う。

public String substring(int beginIndex, int endIndex)

Javaのsubstringのポイントは、

・indexとは配列と同じように対応している

javasubstring

・実際に抜き出されるのは、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は、文字の間の”しきり”に対応している

jssubstring

・実際に抜き出されるのは、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を更新しながら文字列を抜き出すときなどに、思い通りの結果が得られなくなってしまう。