質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

1021閲覧

javascriptで文字のslice以外で文字列を抜き取る方法

rails_ruby

総合スコア87

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2019/03/25 13:40

前回の質問にやや関連します。

実現したいこと

パラメーターで取得した値を、部分、部分カットして挿入したい。

?datetime=2019年3月28日10:00-120分コース

上記のような文字列を,

  • 2019年
  • 3月28日
  • 10:00
  • 120分コース

というような形にカットし、該当するinputに反映させたい。

###該当ソースコード

html

1<input id="yaer"> 2<input id="month"> 3<input id="time"> 4<input id="menu">

js

1var str = "?datetime=2019年3月28日10:00-120分コース" 2let year = str.slice(10,15); 3let month = str.slice(15,20); 4let time = str.slice(20,25); 5let menu = str.slice(26,33); 6console.log(year); 7document.getElementById( "yaer" ).value = year; 8document.getElementById( "month" ).value = month; 9document.getElementById( "time" ).value = time; 10document.getElementById( "menu" ).value = menu;

###困っていること
sliceメソッドでカットすることで、大体やりたいことはできているのですが、コードが冗長なと、10月、11月、12月、と月が二桁になった時にsliceメソッドだとおかしくなってしまうので何かいい方法があればご教示いただきたいです。(1文字ずつずれるため)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

正規表現を使います。

JavaScript

1let str = "?datetime=2019年3月28日10:00-120分コース"; 2let reg = /(\d+年)(\d+月\d+日)(\d+:\d+)-(.*)/; 3let m = reg.exec(str); 4let year = m[1]; 5let month = m[2]; 6let time = m[3]; 7let menu = m[4]; 8 9console.log(year); 10console.log(month); 11console.log(time); 12console.log(menu);

なんか、変数名と中身が合ってないですが(month)。

投稿2019/03/25 13:58

otn

総合スコア84423

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rails_ruby

2019/03/25 14:27

ありがとうございます。 このような正規表現もあったんですね。 勉強になりました。 質問用にコードを少し書き換えたので、その際に誤記したのかもしれません。 ご迷惑おかかして申し訳ございません。
otn

2019/03/25 14:35

文字列から、条件に合った文字列を抜き出すのは、正規表現の本来機能です。
rails_ruby

2019/03/25 15:23

そうなんですね。 勉強になりました。 追加で一点、お聞きしたいことがあります。例えば ?datetime=2019年3月28日10:00-60分コース1 の時、最後の数字をm[5]に入れたい場合、どのようにすれば良いかご教示いただけませんか? 最後の数字は桁数は特に決まっていなくユーザーが増えれば増えるほど桁数も増えていきます。私なりにご教示頂いた正規表現でどうにかならないか試してみたものも上手くいかなかったためご教示いただけると幸いです。
otn

2019/03/26 00:54 編集

/(\d+年)(\d+月\d+日)(\d+:\d+)-(.*?)(\d*)$/
guest

0

サーバーサイド側でどうにかしようとしたのですが、中々うまくできなかったのでjsで書いちゃいました。

js

1let reg = /(\d+年)(\d+月)(\d+日)(\d+:\d+)-(.*?)(\d*)$/; 2 3//mに日付のデータが入っています。 4 let m = reg.exec(str); 5 let year = m[1].replace( '年', '-' ); 6 let month = m[2].replace( '月', '-' ), 7 day = m[3].replace( '日', '' ); 8 let time = m[4]; 9 let menu = m[5]; 10 let id = m[6]; 11 let bookDate = year + month + day + ' ' + time + ':00'; 12

投稿2019/03/27 05:07

rails_ruby

総合スコア87

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問