質問編集履歴

1

内容の修正

2018/01/31 01:13

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- HTMLメールのソースを編集し、1行が490字以内に収まるようにしたい
1
+ C#でHTMLメールのソースを編集し、1行が490字以内に収まるようにしたい
test CHANGED
@@ -14,7 +14,9 @@
14
14
 
15
15
 
16
16
 
17
- イメージとしては、「文字列中央付近にある;(セミコロン)の後ろに改行コード追加する」といった感じなのですが、どうやって上記が再現できるかで詰まっている為、良い方法が無いかお伺いしたいです。
17
+ イメージとしては、「;(セミコロン)数を数え、それを/2して四捨五入し、その番目の;(セミコロン)の後ろに改行を差し込む」といった感じなのですが、どうやって上記が再現できるかで詰まっている為、良い方法が無いかお伺いしたいです。
18
+
19
+ 例:1行が500字 → セミコロンの数を数える(11個) → /2して四捨五入(6) → 6番目のセミコロンの後ろにinsertで改行を差し込む
18
20
 
19
21
 
20
22
 
@@ -44,39 +46,19 @@
44
46
 
45
47
 
46
48
 
47
- // 改行を目処にリスト化
49
+ // 改行を目処にリスト化し、490字以上の行は;(セミコロン)の数を数えて/2して四捨五入を行い、その番目の;(セミコロン)の後ろに改行コードを差し込む
48
50
 
49
- var txtRow = txt.Split(new string[] { "\n" }, StringSplitOptions.None).ToList();
51
+ var txtList = txt.Split(new string[] { "\n" }, StringSplitOptions.None).ToList().Where(x => x.Length > 489)
52
+
53
+ .Select(x => Math.Round((double)(x.Count(y => y == ';') / 2)));
54
+
55
+ ↑このselectがまだ途中で、今回考えているところです。
50
56
 
51
57
 
52
58
 
53
- // MakeshopのHTMLメールが一行490字までの制限があるので、それより長い行は改行を挟む必要がある
54
-
55
- var longTextRow = txtRow.Where(x => x.Length > 489);
56
59
 
57
60
 
58
-
59
- foreach(var row in longTextRow)
60
-
61
- {
62
-
63
- ここで行の中央付近で改行がしたい
61
+ 後は書き込み処理クローズ処理など
64
-
65
- }
66
-
67
-
68
-
69
- fs.Position = 0;
70
-
71
- fs.SetLength(0);
72
-
73
-
74
-
75
- sw.Write(txt);
76
-
77
- sw.Flush();
78
-
79
- sr.Close();
80
62
 
81
63
 
82
64