• ベストアンサー

Javascriptで文字列中の最後の"のみを消去するには?

Javascriptで"が最終文字に含まれた文字列から、それを取り除いた文字列を得る方法がどうしても分からないので、どうか教えてください。 例)「abcde"」→「abcde」 もしよろしければ「a"bcde"」→「a"bcde」といった「"」が途中に出てくるやり方もお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • phoenix343
  • ベストアンサー率15% (296/1946)
回答No.2

(str.match(/http.+"/); コレ自体へんです。URLの書式を分かってないですね。'://'を忘れてませんか。 "で囲まれているのなら /"http:\/\/[^"]+"/ という感じでないといけないと思うのですが。 "で囲まれていないなら /http:\/\/[^ ]+/ てな感じ? いずれにしろ正規表現を考え直したほうがいいかと。 ※意図が違うのでしたらゴメン

playbeyond
質問者

お礼

回答ありがとうございます。 str.match(/http:\/\/[^ ]+/); で完全にうまくいくようになりました。 http://~ に対しては/http:\/\/[^ ]+/でマッチさせるんですね。 とても勉強になります。 本当にありがとうございました。

その他の回答 (1)

noname#86432
noname#86432
回答No.1

replace()と正規表現を使います。 var replaced = 'abcde"'.replace(/"$/, ''); // abcde

playbeyond
質問者

お礼

回答ありがとうございます。 'と"を使い分けて正規表現のreplaceを使えばできるということは分かったのですが、 var elm = document.getElementById("xxx"); //それ以下のノード(?)にリンク含むIDのエレメントを取得する。 var str = elm.innerHTML; //リンクを含むHTMLを取得する。 str = (str.match(/http.+"/); //「~"html~"~」のHTMLから「html~"」を取得する。 str = str.replace(/"$/,''); //質問した部分です。 window.open(str); //新しいウインドウ/タブで開く。 eval(); といったのを考えているのですが、replaceを使う前に取得した文字列が "html~"" となっているためかうまくいきませんでした。 何とかうまくいくように出来ないでしょうか? 根本的に違う方法があればそれでもかまいません。 全くのJavascript初心者ですみません。 お願いします。

関連するQ&A

専門家に質問してみよう