正規表現で抽出した部分に文字列が「存在した場合」と
「存在しなかった場合」の条件付けをIF関数でやりたいです。
タイトル/著者名
というフォーマットの文字列がありまして、
以下のように、文字列の一部を抽出します。
javaScript
1 // タイトルの抽出 2 var reg = "^(.*?)/"; 3 var title_nama = title_hissya_nama.match(reg)[1]; 4 Logger.log(title_nama);
指定した部分に文字列が存在した場合は問題ないのですが、
今回、わからないのは、指定した部分に文字列が「存在しなかった場合」です。
例えば、/著者名
の部分が無く、タイトル
のみの場合です。
「実行に失敗: TypeError: null からプロパティ「1」を読み取れません。」
というエラーが出ます。そういうエラーが出ること自体は、わからなくもありません。
エラーに「null」と言われたので、IF関数の部分は、以下のように書いています。
javaScript
1 // 通常は抽出部分に文字列があるはずなので、「nullではない場合」。 2 if(title_nama != null){ 3 title.setValue(title_nama); 4 } 5 // イレギュラーながら、抽出部分に文字列がない場合もあるので、「nullではない場合以外」。 6 else{ 7 title.setValue(title_hissya_nama); 8 }
「nullではない場合」の部分は期待通りに働くのですが、
「nullではない場合以外」のほうが期待通りの結果を得ることが出来ません。
おそらく、条件の書き方がよくないのだと思うのですが、
どうすれば期待通りの結果を得ることが出来るでしょうか。
教えていただけると嬉しいです。
よろしくお願いします。
自己解決(2018/05/15 3:25)
ちょっと閃きまして。
まず、「文字列にスラッシュを含むかどうか」の判定でワンクッション置き、
「文字列にスラッシュを含むなら、正規表現で文字列を抽出」
「文字列にスラッシュを含まないなら、そのままの文字列を出力」
という条件付けをすればいいんじゃね?
と思って、その通りにスクリプトを書き直したところ、
期待通りの結果を得ることが出来ました!(下記参照)
ありがとうございました!
javaScript
1 if(title_hissya_nama.match(///)){ 2 var reg = "^(.*?)/"; 3 var title_nama = title_hissya_nama.match(reg)[1]; 4 Logger.log(title_nama); 5 title.setValue(title_nama); 6 } 7 else{ 8 title.setValue(title_hissya_nama); 9 }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/16 09:10 編集
2018/05/16 14:59 編集
2018/05/16 15:16
2018/05/18 11:37
2018/05/21 06:07
2018/05/22 23:02 編集
2018/05/23 07:49
2018/05/24 08:23