質問編集履歴
1
内容の修正
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 txt
|
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
|
|