現在、webのツールでHTMLメールを作成し、それをASPサービス(Makeshop)のメルマガとして使用したいと考えています。
ですが、HTMLメールはstyleをインラインに記述するため、場所によっては1行がとても長くなってしまい、ASPサービスのメルマガの1行の文字数制限(490字)に引っかかってしまいます。
そこで、C#でCUIアプリケーションを作成し、exeファイルにドラッグアンドドロップでファイルを指定することで、HTMLメールを編集し、文字数制限に掛からないようにしようとしています。
ここで障害となっているのが、「どうやって長い行に改行を差し込み、文字数制限に掛からないようにするか」というところです。
イメージとしては、「;(セミコロン)の数を数え、それを/2して四捨五入し、その番目の;(セミコロン)の後ろに改行を差し込む」といった感じなのですが、どうやって上記が再現できるかで詰まっている為、良い方法が無いかお伺いしたいです。
例:1行が500字 → セミコロンの数を数える(11個) → /2して四捨五入(6) → 6番目のセミコロンの後ろにinsertで改行を差し込む
コードでは、コメントの削除も行っています。
C#
1 2var fs = new FileStream(ファイルのパス, FileMode.Open, FileAccess.ReadWrite, FileShare.None); 3var sr = new StreamReader(fs); 4var sw = new StreamWriter(fs); 5 6var txt = sr.ReadToEnd(); 7 8// 正規表現を用いてコメント削除 9txt = Regex.Replace(txt, "<!--.*-->", ""); 10 11// 改行を目処にリスト化し、490字以上の行は;(セミコロン)の数を数えて/2して四捨五入を行い、その番目の;(セミコロン)の後ろに改行コードを差し込む 12var txtList = txt.Split(new string[] { "\n" }, StringSplitOptions.None).ToList().Where(x => x.Length > 489) 13 .Select(x => Math.Round((double)(x.Count(y => y == ';') / 2))); 14 ↑このselectがまだ途中で、今回考えているところです。 15 16 17後は書き込み処理、クローズ処理など 18
以上になります、お力添えよろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/02/01 00:31