75オクテットごとに改行を入れる方法とは?
- 質問者は、iCalendarのデータを吐き出すプログラムを作成している。長い項目に関して、75オクテットごとに改行(CRLF)と半角スペースを挿入する方法がわからないという問題がある。文字コードはUTF-8で、全角・半角文字が混在している。また、データ中に を含む場合は、それが途中で切断されないようにする方法も知りたい。
- iCalendarのデータを吐き出すプログラムを作成中の質問者は、長い項目についての処理に困っている。具体的には、75オクテットごとに改行と半角スペースを挿入する方法がわからず、UTF-8での文字コードや全角・半角文字の扱いにも苦労している。また、データ中に含まれる改行文字( )が途中で切れないような処理方法も知りたい。
- iCalendarデータの出力プログラムを作成している質問者は、長い項目の処理について困っている。具体的には、75オクテットごとに改行と半角スペースを挿入する方法がわからないという問題があり、UTF-8の文字コードも扱っているため、全角・半角文字の区別も難しい。さらに、改行文字( )が途中で切れないような処理方法も知りたい。
- ベストアンサー
75オクテットごとに改行を入れる方法
初めて質問させて頂きます。 iCalendarのデータを吐き出すプログラムを作成中です。 長い項目に関して、75オクテットごとに改行(CRLF)と半角スペースを入れないといけないのですが、方法がわかりません。なお、文字コードはUTF-8で、全角・半角文字がまじっています。 なお、データ中に\nを含む場合は、それがぶった切られないようにする方法はないでしょうか? 具体例) DESCRIPTION:あいうえおかきくけこさしすせそたちつてとなにぬね\nのはひふへほ ↓ DESCRIPTION:あいうえおかきくけこさしすせそたちつてとなにぬね [半角スペース]\nのはひふへほ ※上記のように75オクテット目の\とnが途中で改行されないこと。
- lgh09mm
- お礼率0% (0/1)
- Perl
- 回答数1
- ありがとう数0
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
1オクテット = 1バイトと考えます。 UTF-8では日本語の全角半角1文字は3から4バイトですが、OK? > なお、データ中に\nを含む場合は、それがぶった切られないようにする方法はないでしょうか? ??よくわからず。 適当。以下、表示がくずれるので空白2文字を全角空白1文字で書いていることに注意。 use strict; use warnings; # for testing my $wrap = 5; my $string1 = 'A' x 10; my $string2 = 'B' x 13; for my $string ( $string1, $string2 ) { print qq(\x0A\x0D"$string"\x0A\x0D); print "---\x0A\x0D"; while ( $string =~ m/([\x00-\xFF]{$wrap,$wrap})/g ) { print $1, "\x0A\x0D "; } my $rest = length($string) % $wrap; if ( $rest > 0 ) { print substr( $string, -$rest ), "\x0A\x0D "; } print "---\x0A\x0D"; }
関連するQ&A
- Excelのセル内改行について
Excelのセル内に改行を含むデータが入力されています。 Excelでコピー&ペーストを行えば問題ないのですが、 メモ帳にペーストすると改行が ↑ と表示されてしまい、 1行になってしまいます。 メモ帳にペーストしてもセル内で改行されているように 改行したままで貼り付けを行うことは可能でしょうか? Sheet1:A1 あいうえおかきくけこ さしすせそ たちつてとなにぬねのはひふへほ メモ帳:貼り付け あいうえおかきくけこ↑さしすせそ↑たちつてとなにぬねのはひふへほ
- ベストアンサー
- オフィス系ソフト
- エクセルで改行したものをメモ帳に貼り付け
10字~50字程の全角文字がランダムに入っている列があり、それを20字以上の場合は20字で改行された状態にしてメモ帳に貼り付ける必要があるのですが、何か良い方法はありませんでしょうか。 具体的には、 ------------------------------------------------------------------------ あいうえおかきくけこさしすせとたちつてとなにぬねのはひふへほまみむめもやゆよん ↓ あいうえおかきくけこさしすせとたちつてと なにぬねのはひふへほまみむめもやゆよ ん ------------------------------------------------------------------------ という状態でメモ帳に反映させたいです。 エクセルでの改行は、メモ帳にダブルクォーテーション付きで反映されてしまうため、困っています。 関数でもマクロ処理でも構いません。 最終的にメモ帳に改行したものが反映されていればOKです。 できれば、指定した範囲のセル全てそれぞれが一度で改行、メモ帳に反映されると助かります。 どなたか、力を貸してください。。
- ベストアンサー
- その他(業務ソフトウェア)
- EXCELでのスペースと改行について
結合したセル内に文章を入力する際、2行以上にわたると、途中で入力したスペースから勝手に改行されてしまいます。EXCEL2003ではそのようなことが起こらなかったのですが、スペースを入れても改行されない方法を教えてください。 セルの書式設定は、 横位置:左詰め、または標準 縦位置:上詰め 「折り返して全体を表示する」「セルを結合する」にチェック。 Windowsの設定で、スペースは常に半角にしています。 ■がスペースと仮定すると、 あいうえおかきくけこ さしすせそたちつてと のような2行以上の文章にスペースを入れると、 あいう■ えおかきくけそさしすせそ・・・ のようになります。 また、1行に2つ以上のスペースを入れると、 あいう■えおかき■ くけそさしすせそ・・・ のように、一番最後のスペースで改行されます。 昔にEXCEL2003で作成していた文章も、同様の書式に変えられ、スペースが入っているところで勝手に改行されており、とても見にくく(醜く)なっています。 色々ネット上で調べ、「検索にはCtrlとJを押す、置換にスペースを入力」、というやり方を見つけましたが、試してみたところ、「置換対象のデータが見つかりません。・・・」というポップアップが出、うまくいきませんでした。 どなたか、ぜひご教示下さい。よろしくお願いします。
- ベストアンサー
- その他MS Office製品
- 半角全角文字が混ざった文字列の分割
半角と全角があ混ざった文字列があります。 "202号室:あいうえおかきくけこさしすせそたちつてと" これを半分に切りたいのです。 "202号室:あいうえおかきく" "けこさしすせそたちつてと" ↑この場合、202が半角であること。半分としたときに、 最後の'く'という文字がかけてしまわないことが条件なのです。 どなたかわかる方お教えください。。。
- ベストアンサー
- Java
- 正規表現で固定長に揃えたい
正規表現で固定長に揃えたい 秀丸など正規表現のできるエディタを使用し リターンを含まない長い文字列を固定長にしたいです <例> あいうえおかきくけこさしすせそたちつてとなにぬねのはひふ ↓10文字ずつ改行 あいうえおかきくけこ さしすせそたちつてと なにぬねのはひふ よろしくお願いします
- ベストアンサー
- その他([技術者向] コンピューター)
- 文字列前後の「全角空白/半角空白/改行文字」を取り除く
PHPで、「文字列の前後に付加されている全角空白/半角空白/改行文字を取り除く」 という処理をしたいのですが、以下のように置換処理を書くとうまくいきません。 $after = preg_replace('/^[ \r\n]*(.*)[ \r\n]*$/u', '$1', $before); // [ \r\n]→[半角空白、全角空白、改行文字]です どううまくいかないのかといいますと、入力として半角スペース+全角文字が入ったときに、全角文字の先頭文字が文字化けしてしまいます。 たとえば、 <半角スペース>あああ をこれにかけると、 <よくわからない文字>ああ となります。 以下のように2回に分けてみると、正常に動きます。 $tmp = preg_replace('/[ \r\n]*$/u', '', $before); $after = preg_replace('/^[ \r\n]*/u', '', $tmp); 最初のように1回の正規表現による置換で済ませたい場合、 どのように書くのが適切なのでしょうか? PHPのバージョンは5.2.3です。
- ベストアンサー
- PHP
- 文字数を越えた文字列を削除するには?
いつもお世話になっております。また行き詰ってしまいました。 ご助言頂きたくお願い致します。 A列とB列にデータが入っていて、B列には2つのパターンの文字が入っています。 一つは、前の10文字が必ず半角(英字+9ケタの数字)その後は全角のスペースの後に 全角の文字が並びます。(全角の文字数は不規則) 例1:A123456789 あいうえおかきくけこさしすせそ もう一つは頭からすべて全角文字 例2:あいうえおかきくけこさしすせそたちつてと 問題になっている部分は、このB列に入っているデータを頭から 全角15文字以内、半角なら30文字以内に収める という所です。 例1だと、 A123456789 あいうえおかきくけこさしすせそ →A123456789 あいうえおかきくけ(半角10文字+全角10文字) 例2だと あいうえおかきくけこさしすせそたちつてと →あいうえおかきくけこさしすせそ(全角15文字) 下記のようなマクロを作ってみたのですが2つのパターンに対応する為にはどうすればよいでしょうか? Const col1 As String = "B" Dim idx1 As Long Dim myStr1 As String With ActiveSheet For idx1 = .Cells(65536, col1).End(xlUp).Row To 1 Step -1 myStr1 = Cells(idx1, "B") If .Cells(idx1, "B").Value = "" Then Else Cells(idx1, "B") = Left(myStr1, 15) End If Next idx1 End With 以上、宜しくお願い致します。 環境:windowsXP Excel2003
- ベストアンサー
- Visual Basic
- 改行コードCR(\r)をアンダースコア(_)に変換
AIX、Kシェルです。 ファイルに出力された改行コードCR(\r)をアンダースコア(_)に変換したいのですが、 文字コードSJISだと期待通りの結果になるのですが、UTF-8だと全角の手前で止まってしまいます。 試したコマンドは下記です。 cat file.txt | tr "\r" "_" > tmpfile ex) file.txt(最終行は半角spaceと全角space) 10(改行コード=LF) 11(改行コード=CRLF) 12(改行コード=CR) 1(改行コード=LF) 2(改行コード=CRLF) 3(改行コード=CRLF) ああ(改行コード=CRLF) (改行コード=CR) 【結果】tmpfile 10(改行コード=LF) 11_(改行コード=LF) 12_1(改行コード=LF) 2_(改行コード=LF) 3_(改行コード=LF) ああ_(改行コード=LF) _ これがUTF-8だと12までは変換できるのですが、以降が出力されません。 UTF-8でも最後まで変換されるようにするにはどうすれば良いのでしょうか? 初心者で申し訳ありません。 お手数ですが、何卒宜しくお願い致します。
- ベストアンサー
- その他(プログラミング・開発)
- 文章改行で出来る半角スペースを省く方法ありますか?
Homepage Builder Ver.9を使ってHPを作っているのですが、 HTML構文を整えようと思い、 タブ以外で、文章でも改行してしまうと半角スペースが1つ出来てしまいます。 本当は、このスペースが要らないのですが、どの様にすればスペース無しで整えられるでしょうか。 例えば、 <TABLE border="2"> <TR><TH>五十音</TH> <TD>あいうえお かきくけこ</TD></TR> </TABLE> としたとしたら、 あいうえお かきくけこ という上記の様に半角スペースが1つ出来てしまいます。 又、 <TD>あいうえお かきくけこ</TD></TR> としても、 あいうえお かきくけこ といった形で半角スペースが1つ出来てしまいます。 因みに、ここでは全角スペースで揃えました。 本当は半角スペースです。 文章で改行しても、半角スペースが出来ない様にする方法、 もしご存じでありましたら、何方様か教えて頂ければ幸いです。 どうしても、HMTL構文(又、ソース)を見ても横に長すぎて、 文章のある部分で改行をして整えたいのですが、 不要な半角スペースを省く(又は、除く)方法があればと思っております。 宜しくお願い致します。
- ベストアンサー
- HTML
補足
説明不足でした。 my $a = "あいうえおかきくけこさしすせそたちつてのなにぬね\\nのはひふへほ"; というデータに対して、printした際に、出力結果として ……なにぬね\ nの… ではなく、 ……なにぬね \nの…… と\nが分断されないように出力したいという意味でした。 ただ、解決策が見えてきたような気がします。ありがとうございました。