回答編集履歴
2
しゅうせい2
answer
CHANGED
@@ -31,7 +31,7 @@
|
|
31
31
|
vbTabについて
|
32
32
|
---
|
33
33
|
次に制御文字の部分に着目すると、vbTabは1バイトとなっています。
|
34
|
-
タブ文字というは、1バイトの文字(文字コード:9番)なのです。`vbTab = Char(
|
34
|
+
タブ文字というは、1バイトの文字(文字コード:9番)なのです。`vbTab = Char(9)`
|
35
35
|
"vbTab"という5文字で5バイトというわけではないんですね。
|
36
36
|
|
37
37
|
1バイトの文字に特別な機能(タブ文字ならインデントする機能)を持たせているのが制御文字なんです。
|
@@ -85,5 +85,4 @@
|
|
85
85
|
```
|
86
86
|
Return (s.Length - s.Replace(c.ToString(), "").Length) / c.Length
|
87
87
|
```
|
88
|
-
長文失礼しました。
|
89
|
-
参考になれば幸いです。
|
88
|
+
長文になってしまいましたが、参考になれば幸いです。
|
1
しゅうせい
answer
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
全角が混ざると説明がちょっとややこしくなるので、半角で説明しますね。
|
8
8
|
例えばDBからの取得値`"abc 123ABC"`という文字列がstrValueという変数に入っているとします。
|
9
|
-
この文字列は、改行の表現できない状態で見ると`"abc 123ABC"`と見えますが、間にはタブ文字や改行文字が入っており、VB上では"abc" & vbTab & "123" & vbCrLf & "ABC"で作成される文字列と同じだとします。
|
9
|
+
この文字列は、改行の表現できない状態で見ると`"abc 123ABC"`と見えますが、間にはタブ文字や改行文字が入っており、VB上では`"abc" & vbTab & "123" & vbCrLf & "ABC"`で作成される文字列と同じだとします。
|
10
10
|
|
11
11
|
ここまでは全角の文字が半角になっている以外はご質問の内容と同じですよね。
|
12
12
|
|
@@ -71,19 +71,19 @@
|
|
71
71
|
|
72
72
|
対策
|
73
73
|
---
|
74
|
-
案①
|
74
|
+
**案①**
|
75
75
|
簡単な対策としては、`vbCrLf`ではなく`vbCr`で検索するという方法です。
|
76
76
|
|
77
77
|
先にも書いた通りvbCrLfにはvbCr(13)とvbLf(10)の2文字が含まれています。
|
78
78
|
単純に含まれている数を数えたいだけであれば、1バイト文字であるvbCrだけを検索すれば、思った結果が得られると思います。
|
79
79
|
|
80
80
|
|
81
|
-
案②
|
81
|
+
**案②**
|
82
82
|
「1バイト以外の文字列でも正しくカウントを取りたい」という場合は、CountChar関数を修正する必要があります。
|
83
83
|
|
84
84
|
置換した結果は`削った文字数`となっているため、これを`cの文字長`で割ってあげれば置換した個数にできそうです。
|
85
85
|
```
|
86
86
|
Return (s.Length - s.Replace(c.ToString(), "").Length) / c.Length
|
87
87
|
```
|
88
|
-
|
88
|
+
長文失礼しました。
|
89
89
|
参考になれば幸いです。
|