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


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>