• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:記号とあらば、1文字でも全て削除する方法(記号全滅作戦))

記号とあらば、1文字でも全て削除する方法(記号全滅作戦)

このQ&Aのポイント
  • 記号全滅作戦について解説します。センセーショナルなタイトルと共に、記号や特定の文字を削除する方法をご紹介します。
  • TABLEの表組やサイトのレイアウトを整えるために、記号や特定の連続文字を削除する方法を学びましょう。
  • 詳細な手法やマッチさせる方法について解説します。特定の文字列を一括で削除する際に活用できる情報もご紹介します。

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

  • ベストアンサー
  • JaneDue
  • ベストアンサー率75% (263/350)
回答No.2

横から失礼。質問からはズレますが、自動改行されれば問題ないのだとすれば、配布のJavaScriptでOKでしたよ。 <script type="text/javascript" src="wordBreak.js"></script> <!-- テーブルに class="wordBreak" --> <table class="wordBreak"><tr> <td style='width:300px;'> ★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ </td> </tr></table> wordBreak.js http://blog.webcreativepark.net/2008/09/14-211341.html ※css の word-break:break-all; でも強制改行可だがFireFoxダメ

keeeeeeen
質問者

お礼

JaneDue様 Tacosan様が指摘されている本質問題についてのアドバイス、ありがとうございます! >自動改行されれば問題ないのだとすれば、配布のJavaScriptでOKでしたよ。 その手がありましたか!! ブラウザー毎に独得の表示仕様があり、こちら側では、対処のしようがない問題だとばかり思っていたので、この本質問題については、ぐぐることさえしていませんでした。。。。 (改行等という、表示に関する根本的なことを、JavaScriptが制御できるとは思ってもいませんでした) 配布のJavaScript、早速、活用してみます。 教えていただき、ありがとうございます! たぶん、これで、連続記号によるレイアウトぐちゃぐちゃ問題は、予測不能な事が起きない限り、なくなると思います。 <今回の教訓> ●なんでもかんでもPerlで解決しよとせず、発想を変えて、JavaScriptでの解決方法も探ってみる。 ●まずは本質問題に取り組み(無理っぽくても、とりあえず、ぐぐってみる)、それで駄目なら、対処療法にとりかかる。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

(utf-8 以外の) バイト列だとどうやってもめんどくさそうなので, とりあえず内部文字コード (Unicode) に Encode::decode してから処理するのがよさそう. 前者の方が簡単なのでこっちを先にやると, おそらく tr/つぶしたい記号の羅列//d; が意味としては最も分かりやすい. 後者は.... うまくやらないと 「あっちこっちいってにっちもさっちもいかない」 という文章をはねてしまうことになる. 実は前回の「同じ文字が 3個以上続いていたら」でも同じ問題を抱えていて, GREEEEN (E の個数はあってますか?) が引っかかっちゃうんだよね. と書いておくけど所詮この辺は「小手先」であって本当は > 記号等が20文字程以上つづくと、TABLEの表組の中で、それらの連続文字が「改行されず」、ぺージのレイアウトをメチャクチャにする という状況を何とかする方が適切なのかもしれないと思いだした今日この頃.

keeeeeeen
質問者

お礼

Tacosan様 重ね重ね、アドバイスいただき、ありがとうございます! >とりあえず内部文字コード (Unicode) に Encode::decode して >tr/つぶしたい記号の羅列//d; この方法で対処していきたいと思います。 ありがとうございます。 >実は前回の「同じ文字が 3個以上続いていたら」でも同じ問題を抱えていて, GREEEEN (E の個数はあってますか?) が引っかかっちゃうんだよね. この点に関しては、もう完全に諦めています。(^_^;) レイアウトがグチャグチャになるぐらいなら、いっそのこと、なくなっちゃってくれた方がいいと割り切っています(その文字列が消えてしまって、大問題になる、という事は、あまりないので)。 >TABLEの表組の中で、それらの連続文字が「改行されず」、ぺージのレイアウトをメチャクチャにするという状況を何とかする方が適切なのかもしれない よく考えたら、、、、おっしゃるとおりで、本来はこちらが本質ですね。(^_^;) (対処療法にばかりに目がいってました。理由:ブラウザー毎に独得の表示仕様があり、こちら側では、どうしようにもない問題だとばかり思っていました) そして、Tacosan様の、そのご指摘のおかげで、JaneDue様から、その本質問題についてのアドバイスが寄せられました!(この点につきましても感謝致します) ※尚、先程、、、、 $contents=~s/△//g; $contents=~s/▼//g; は効果がないと書きましたが、¥を加えて $contents=~s/¥△//g; $contents=~s/¥▼//g; とやると、効き目がある事が分かりました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 3回以上連続する文字(どんな文字でも)を削除する方法

    3回以上連続する文字(どんな文字でも)を削除する方法 お世話になります。 掲示板等の文字列で、、、 ■■■■■■■■ や ========= といった連続する文字列を削除したいと思っています。 その際「3回以上、同じ文字がつづいているものは、根こそぎ削除」という形にしたいと思い、 ~s///g; を用いて、あれこれやっているのですが (また、ぐぐって、あれこれ調べたのですが) 全く、うまくいきません。 どの様にすれば、うまくいくのか、アドバイスいただければ幸いです。

    • ベストアンサー
    • Perl
  • 文字列内の記号、スペースなどを削除する方法

    エクセル2000 OS:WinXPpro 本人の技量レベル:VBAはコピペして実行しても、修正が出来ないので、なるべく関数で処理したい。 半角カタカナ英数だけの文字列を作りたいのです。 元のデータには()などの記号、句読点、スペース等が含まれています。 一応TRIM関数で余分なスペースは削除しましたが文字列中の半角スペースが残っています。 これを半角カタカナ英数だけを残してベタの文字列にしたいのです。

  • 正規表現で全角文字を全て削除したい

    正規表現を使ってアスキーコード文字以外の全角文字を全て削除しようとしたのですが、ユーロ記号 € が削除できませんでした。 以下は英小文字以外全て削除しようとしたものです。 英小文字以外や全角文字は削除できているようですが、ユーロ記号が削除されません。 mb_ereg_replace ('[^a-z]', "", $str); error_logを使って確認してみるとそもそもブラウザから送られてきたきた時点で &#8364; となっています。(ユーロ記号そのものがこの場に表示されてしまうので全角で明記していますが実際は7文字全て半角です。) これが正しい挙動なのかどうかも判断がつきかねています。(コード番号そのものはユーロ記号のようですが) error_log($_POST['moji'], 0); 以下のようにアスキーコード以外全て削除という指定も削除されませんでした。 &#8364; をアスキーコード7文字として一つ一つ処理しているようです。 mb_ereg_replace ('[^\x00-\x7f]', "", $str); ちなみにこの &#8364; の入った $str をHTMLを使いブラウザに出力してやるとちゃんとユーロ記号が表示されます。 <pre>{$str}</pre> mb_internal_encodingやmb_regex_encodingの設定などいろいろ試してみたのですがうまくいきませんでした。 この文章を書いていて今思ったのですが、ひょっとしてまず &#と; で挟まれたものを削除するというのがこの問題の一般的な解決方法なのでしょうか。そうすればユーロ記号 &#8364; も削除できますし。もしそうならその辺の事情も解説あるいはURL明記していただけると助かります。 (でもこれ、アスキーコードは残したい場合にたまたま &#8364; というユーロ記号を意図しないただの半角7文字の文が入力されてきてしまっても削除されるということになっちゃいますね。これはやっぱりしょうがないのですかね。) よろしくお願いします。

    • ベストアンサー
    • PHP
  • utf16の記号のutf8へのエンコード(もしくはマッチ又は削除)がう

    utf16の記号のutf8へのエンコード(もしくはマッチ又は削除)がうまくいきません。 お世話になります。 前々回、、、、 http://okwave.jp/qa/q6232556.html でUTF-16をUTF-8に変換する方法を教えていただきました。 (その節は、ありがとうございました) $name=~s/\\u([[:xdigit:]]{4})/chr eval "0x$1"/eg; が、この方法だと、記号が変換されず、例えば、、、 ●「~」 は 「\x{301c} 」 と表示され ●「・」 は 「\x{2022}」 と表示されてしまいます。 これらの記号のデコード方法が調べても分からなかったので、いっそ、削除しちゃえ!とばかりに、、、 「「x」から始まり「}」で終わる文字は根こそぎ削除!というプログラムを組み込んでみたのですが、まったく反応せず。 チェックの為に行った「x」だけの削除ですらマッチせず。。。。 (これでは反応しないはずですね。。。) ということで、utf16の「記号」のutf8へのエンコード(もしくはマッチ又は削除)の方法について、アドバイスいただければ幸いです。

    • ベストアンサー
    • Perl
  • (Word 2003) 特定の文字列の右側にある段落記号を一括で削除したい

    連続した2文字以上の半角ハイフンのすぐ右側にある段落記号を一括で削除したいのですが、 簡単に実現することは可能でしょうか? ※1.連続した半角のハイフンですが、入力したものではないので罫線には変換されていません。 ※2.一般操作で不可能な場合はマクロでも構いません。 Word は初心者です。 よろしくお願いします。

  • 文字列で2行だけ削除する方法。

    PHP5を使っています。 file_get_contentsで文字列を取得したのですが 先頭行2行と最後の行を削除する方法が知りたいです。 改行はLFですがCR+LF,CRでも対応したいです。 また、文字コードもUTF8ですが、どんな文字コードでも対応したいです。 どんな方法が最もスマートな方法でしょうか?

    • ベストアンサー
    • PHP
  • 記号文字の一覧について

    ウェブアプリケーションにおいて、ある項目に入力する文字列を、英数字と「記号」に絞ってバリデーションを行い、それ以外の文字の場合にはエラーメッセージを表示しようとしています。 英数字かどうかチェックするだけであれば話は場合は簡単で、単純にJavaのisLetterOrDigitメソッドを使えばよいのですが、記号も許可したいとします。記号というのは、キーボード上で思いつくものでいえば例えば ~!@#$%^&*()_+|}{":?><[]\;',./ といったものですが、他にももっとたくさんあると思います。こういったものは、一覧としてまとまっているものなのでしょうか。判定する場合、文字コードのここからここまで、といったような標準的な判定方法があれば教えてほしいです。 記号といっても要件による、と言われてしまいそうですが特定の要件はないので一般的なものがあればそれを使いたいと思って質問致しました。以上、宜しくお願いします。

    • ベストアンサー
    • Java
  • 正規表現で分かりません

    例えば以下のようなパターンの正規表現チェックがあるのですが、 どのようなものを意味しているか分かりません。 教えていただけますでしょうか。 よろしくお願いします。 以下の情報は調べたのですが。 +(プラス)・・・直前の1文字の1回以上の繰り返しを表現 . (ピリオド)・・・改行コード以外の1文字にマッチするか否か [ ](大括弧)・・・囲みの中に書かれた任意の1文字にマッチするか否か ^([^ ]+) +[^ ]+.+S3.lzh

  • 1キロバイト文字の削除について

    例えばsijisの「、」を削除しようと思い $body =~ s/\xa4//g; とすると\xa4を含む「う」などにも作用し、\xa4を削除してしまいます。 そこで2キロバイトの文字には作用しないようにするにはどうしたらいいか考え 「う」などがあった際には\xa4を削除しないようにしたのですが その場合、例えば「う」と「、」の両方があった時に「、」を削除しなくなってしまいます。 1キロバイトの文字を削除しても2キロバイトの文字には影響しない 何かいいアイデアはないでしょうか?

  • sedコマンドで全ての2バイト文字を指定するには?

    こんにちは。 LinuxやWindows用のsedコマンドには、[・・・]という演算子によって、 特定の範囲の文字集合が指定できます。 例えば sed "s/[a-zA-Z]//g" test.txt というコマンドによって、test.txtから、アルファベットを削除する事ができます。 では、シフトJISコードにおいて、全ての2バイト文字を指定するにはどうすればよいのでしょうか? シフトJISコードでは、最初の漢字が「亜」であり、最後の漢字が「黑」らしいので、 sed "s/[あ-んア-ン亜-黑]//g" といったコマンドを試しましたが、これでは 「ー」「、」「。」「ぁぃぅぇぉ」といった文字が残ってしまいます。 結局は、シフトJISコードの2バイト文字の範囲を知りたいのですが、 調べてみても分かりませんでした。 ご存知の方がいらっしゃれば、情報提供をお願い致します。