損するあほう

やったこととか残しておく。※個人の感想です

KLWPに明日一日の降水確率を表示させたい 改善編

こんにちは。

 

降水確率の表示であれこれした記事を2つ作りました。0%のときに「0%<」とタグの一部が見えちゃう問題を抱えたまま、まあいいやと終わりました。

 

前回はこんな感じ。


すると再びコメントをくださいました。貴方は本当に通りすがりですか?菩薩ですか?善意まき散らしすぎですよ。ありがとうございます。

$tc(split, tc(split, tc(split, wg(gv(tmrwosak), raw), "rain", 2), ">", 1), "<", 0)$ でいけると思います。splitの最後の引数を0にすると、区切りの前の文字列が取り出せます。

 

私のコマンドが$tc(cut...で始まるのに対して、$tc(split...にしてはどうかとおっしゃいます。

こんがらがってしまいますが、コマンドを日本語に直すと
tmrwosakのHTMLコードにおいて「rain」で区切った3番目の文字列を「>」で分けた1つ目の文字を取得。そのうえで「<」を用いて分割した1番目の箇所を表示する。

 

文字数を指定してKLWPに表示させようとしていたtc(cut, "x", 3)に対して、制限をつけないsplitを用いて、xを再び「<」で分割する方法なら大丈夫だと教えてくださいます。

 

ではまず実践してみましょう。翌日のものではありませんが、本質は同じです。

f:id:yu_john:20200513172204p:plain

書き替え前

f:id:yu_john:20200513172314p:plain

書き替え後

確かに<が消えています。本当、ありがとうございます。すっきりします。

 

本編はここまでです。以下は自分が納得するためにどういう仕組みかを書いておきます。

 

コードを見ながら考えてみます。

f:id:yu_john:20200511165826p:plain

黄色に塗られたrainの後ろが表示させたい部分です。

前回使っていたコマンドの一部である

tc(split, tc(split, wg(gv(tmrwosak), raw), "rain", 2), ">", 1)

ここまでだと、「10%</li></ul></td>.....」となります。
それをtc(cutを使って先頭から3文字切り抜く、との指定です。

確かにこうなると0%の場合は先頭から3文字目の<も一緒に取り出されると。そして逆に100%だった場合は「100」とだけ表示。

 

表示したい箇所が変動するのをカバーするために、数ではなく範囲を指定するようにtc(splitを使えばよかったのかと。同じコマンドの中で何度も使っているものを見落としてしまうとは...。

 

しかしながらこれで本当に一件落着。
何度も見てくれた通りすがりさんには再び感謝です。貴方は人をひとり救ったのです。

 

では、またお会いしましょう。