タイトル : Re: ゴミデータの検知と制御について 投稿日 : 2016/12/12(Mon) 10:57 投稿者 : Hongliang
> 1.このデータは何なのか、ヌルコードなのか? > それならnothingではじかれるはず? 文字コード0の文字、Unicode的に表現するとU+0000という文字が、5文字含まれたStringオブジェクトです。 ASCIIコードの時代から、0〜31の文字コードには制御コードという、自然言語的には文字とは言えないような文字を当てはめていました。Unicodeでもそれらは引き継がれています。 文字コード0は、C言語などの文字列に特別な型を使用しない言語などにおいて、ここが文字列の終わりであることを示す「終端文字」という役割が割り当てられています。 VBでは文字列には文字列型が存在しており終端文字が無くとも文字列を表現できるので、文字コード0の文字もただの文字です。 // 一般的なフォントにおいてはグリフが割り当てられていないので、不可視だったり、表示機構によっては代替文字に置き換えられて表示されたりします。 > 2.select trim(lw.MOJI) > case "xxxxx" > > case "" > > case else > > end select > > でelse前に検知、制御したいのですがselect文にどう修正加えたらよいか悩んでしまいました hhttps://msdn.microsoft.com/ja-jp/library/microsoft.visualbasic.strings.trim.aspx 上のページの記述通り、Trim関数は文字列前後の空白を削除する関数です。 文字コード0の文字は空白を意味する文字コード32の文字ではないので、この関数で削除することはできません。 前後の特定の文字を消すのであれば、Stringオブジェクトに用意されているTrimメソッドを使用します。 Dim trimmed As String = lw.MOJI.Trim(ChrW(0)) // 前の部分だけ消すTrimStartメソッド、後ろの部分だけ消すTrimEndメソッドもあります。 ちなみに、Trimメソッドによって全ての文字が消された場合、長さ0のStringオブジェクト、つまり「""」、空文字列になります。 文中に含まれているのも削除する必要があるなら、StringオブジェクトのReplaceメソッドを使用することになるでしょう。 |