javascriptで、配列に入れた文字に( )が含まれています。( )の部分をそっくり削除したいのですが、

下記の方法を試したところspeaktagは、ちゃんと神奈川県となるのですが、
( )が入っていない文字列の場合は、なぜか,speaktagの中身がすべて空欄になってしまいます。
なぜなのでしょうか?

例)
kotae ="神奈川県(川崎市)"
speaktag =kotae.substring(0,kotae.indexOf("("));

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2015/10/07 15:05:03

回答1件)

id:pogpi No.1

回答回数428ベストアンサー獲得回数59

kotae.indexOf("("))で、-1が返っているせいだと思います。
「-1」が返ったら、トリムしないようにすれば大丈夫でしょう。

他1件のコメントを見る
id:pogpi

indexOfを先に見て、「(」があれば、

kotae.indexOf("(")) > -1

ですね。if文の括弧内は上記ですよね。

speaktag =kotae.substring(0,kotae.indexOf("("));

を、そのif文でくくればいいだけです。

2015/09/30 17:57:38
id:kajironpu

なるほどー ありがとうございます!

2015/09/30 21:50:45
  • id:Lhankor_Mhy
    speaktag =kotae.split("(")[0];
    の方が楽かなあ、などと。
  • id:a-kuma3
    kotae.replace(/(.*/, "");
    の方が応用が利くかなあ、などと。
  • id:kajironpu
    ありがとうございます。
    いろいろ方法があるんですね。
    全部試して確認してみたいと思います。
    ありがとうございました。
  • id:kajironpu
    ありがとうございます。
    kotae.replace(/(.*/, ""); のほうは、(が大文字ではなく、小文字の場合(の部分を小文字にしてみたのですが、
    なぜか、うまくいきません。
    あと、( )の部分ではなく、( )の前だけを取り出す方法はどのようにしたらいいのでしょうか?

    例)
    kotae ="神奈川県(川崎市)" から、神奈川県だけを取り出したい。
    この場合、()のところを、空欄で埋めたらいいのでしょうか?
  • id:a-kuma3
    >kotae.replace(/(.*/, ""); のほうは、(が大文字ではなく、小文字の場合(の部分を小文字にしてみたのですが、
    >なぜか、うまくいきません。

    replace メソッドの第一引数は「正規表現」というのですけれど、半角の括弧には特別な意味があります。
    引き当てるためには、こうやります。

    kotae.replace(/\(.*/, "");

    半角の括弧の前にバックスラッシュ(半角の¥)を入れます。
  • id:kajironpu
    ありがとうございました。無事成功致しました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません