- ベストアンサー
文字列の整形方法
"○○が5以下の場合、☆☆ 1減少<BR>●●が42以上の場合、▲▲3増加" "★★ 5増加<BR>□□ 2減少" "■■が85の場合、◎◎ 1減少" と言うような文字列が大量にあるんですが、 <BR>で区切り、条件判断の文を満たしていない、または条件判断の文でない場合はその区切り全体の文字色を黒 満たしていて、結果が減少の場合は赤、増加の場合は青 に変えたいのですが何か良い方法はありますでしょうか
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>区切られた文字列を人間的に文面通り解釈して 人間的に解釈する方法は、文字列の内容をご存知の質問者様しかいません。まさか、ほんとうに人間的に解釈しろというわけではないですよね? (この程度ならできると思うけど、結構すごいものになりそう) 適当に推測して見ると… 質問文に示されている範囲に限定してよいとするなら、<BR>で区切った後の対象文が **(が)**[以上|以下|同じ](の場合、)***[増加|減少] という構文に必ず合致している( *は任意文字、()内は定型文、[]内は選択文 )とかいうのであれば、マッチング(正規表現)でそれぞれを取り出してチェックすればよいのではないでしょうか? これだと、あまりにも定型的な文字列に限定すぎて、仮定しているみたいな気もするけど・・・ それであっても、**部分の内容を一応はチェックしとかないとまずそうだし、想定外の値の場合の処置とかもいるのでは?
その他の回答 (2)
- askaaska
- ベストアンサー率35% (1455/4149)
<br>での分割はsplit "減少""増加""以上""以下""同じ"が入っているかどうかは indexOfやmatch での判定でできるわね。 あとはベタにif文を羅列すればできるわね。
- askaaska
- ベストアンサー率35% (1455/4149)
先に確認するんだけど これってJavaScriptの質問なの? 結果的に生成したいものはHTMLなのはわかるけど。 最初の文字列も どのようにして提供されているのかわからないわ。 あと > <BR>で区切り、条件判断の文を満たしていない、 > または条件判断の文でない場合はその区切り全体の文字色を黒 > 満たしていて、結果が減少の場合は赤、増加の場合は青 これも何を言っているのかわからない。 日本語としてどう読めばいいのかがさっぱりよ。 もっと綺麗にまとめて御覧なさい。 コーディングって、以下に綺麗に条件を整理できるかが大切なのよ。
補足
webでの軽快な画面描写をしたいのでjavascriptが良いのと javascript以外の言語をよく知らないからです >最初の文字列も >どのようにして提供されているのかわからないわ。 普通に配列に入っているだけです 1つの配列に入っている文字列を<BR>で区切って判断して 区切られた文字列を人間的に文面通り解釈して それが何かしらの条件をあらわしているもの(以上・以下・同じ)であり、かつ条件を満たしていて、結果が減少である場合、区切られた文字列全体の文字色を赤にして出力 結果が増加である場合、青にして出力 条件を満たしていない場合、もしくは条件文に見えない場合(とりあえずは以上・以下・同じ以外)は黒にして出力 と言うことをしたいのです 一番上の行であれば var data=new Array(); data[0]="○○が5以下の場合、☆☆ 1減少<BR>●●が42以上の場合、▲▲3増加"; if(○○ < 5 && 処理に価する部分の文 == 減少) output+="<font color=red>"; else if(○○ < 5 && 処理に価する部分の文 == 増加) output+="<font color=blue>"; else output+="<font color=black>"; output+=data[0].split("<BR>")[0]+"</font>"; のような処理をやりたくて、条件判断文を動的に作る方法、と言った感じでしょうか ○○や☆☆の部分はそこまで種類がないので、ほかの配列に参照用データとして先に入力しても手間はかからないのですが それをやる必要があるかはわからないです
補足
とりあえずはこの程度です ほぼすべて書かれている条件どおりの文になっていて 当てはまらない場合は黒でOKなので しいて言えば無条件で増加、減少があることがあるくらいでしょうか