• 締切済み

文字列から、null値を除去する方法

VBで、WindowsAPI関数のGetComputerNameを使って、コンピュータ名を取得する 処理で、コンピュータ名の定義が、50バイト固定のString型になっています。 コンピュータ名は問題なく取れるのですが、50バイト固定のため、後半にnull 文字列が入ってしまい、除去する方法がわかりません。 (replace命令等チャレンジしましたが、だめでした) どなたか、nill値の除去方法をお教え下さい。宜しくお願い致します。

みんなの回答

  • osaosa42
  • ベストアンサー率60% (20/33)
回答No.4

データ型の宣言で固定長だからじゃないですか? Dim ComputerName As String * 50 'API用バッファ Dim strName As String '文字バッファ strName = Left(ComputerName, InStr(ComputerName, vbNullChar) - 1) ←maruru01さんの方法 以上

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.3

再びmaruru01です。 No.2のElvinさん、TrimではNullは削除出来ません。 横から口を出して申し訳ありませんが、質問者の方が勘違いされるといけないので。 不快に思ったらすみません。 では。

  • Elvin
  • ベストアンサー率0% (0/2)
回答No.2

文字列からスペースを削除する Trim ではどうでしょうか? Trim(文字列)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちはmaruru01です。 次のようにします。 NoNullName = Left(ComputerName, InStr(ComputerName, vbNullChar) - 1) では。

関連するQ&A

  • PHPの空白除去

    PHP5において 半角の前後空白を削除する関数trimは理解してます。 文字列中にある半角及び全角の空白を除去するには 文字列置換用の関数、例えばstr_replaceを使って置換すれば 全て空白を除去出来ます。 例: ---------------------------------- $string=" あ い う え お "; $all=" ";//全角スペース $half=" ";//半角スペース $no="";//削除用変数 $string=str_replace($all,$no,$string); $string=str_replace($half,$no,$string); ---------------------------------- 最後の2行を書けば置換が出来るのですが、問題はこの二つの関数をまとめてクラス化し、再利用したいと思っています。 クラスの作成方法及び使用方法がまだまだ理解していないので、困ってます。どなたかお力になって頂ければ幸いにございます。

    • ベストアンサー
    • PHP
  • 文字除去

    こんにちは、 c/c++ 初心者です(PG経験はたっぷりです) やりたい事は、time(hh:mi:ss)文字列(string or char)から、コロンを除去するのですが、素敵な方法が思いつきません。 今は単純に、文字列のpositionを固定で指定してstrcatしてます、目的は果たせてましたが、、、 他に、素敵な方法はありましたら、ご教示ください。 文字列:16:24:55 を 162455 に編集する。

  • 外字の除去方法

    WindowsXP(SP2) VisualBasic6.0(SP6) を使って開発をしています。 現在、文字列から外字を除去するプログラムを作っています。 S-JIS(F040~F9FC)にあたる外字を除去する方法は分かったのですが、Unicode(E000~F8FF)にあたる外字を除去する方法が分からず困っています。 ご存知の方がいましたら教えてください。 宜しくお願いします。 (追伸) ↓↓S-JIS外字を除去する場合------------------------------------- Public Function DeleteGaiji(strText As String) As String Dim Reg As New RegExp Reg.Pattern = "[" & Chr(&HF040) & "-" & Chr(&HF9FC) & "]" Reg.Global = True DeleteGaiji = Reg.Replace(strText, "") End Function 上記の方法でS-JIS外字を除去しようと思っています。 Unicodeの場合は、 Reg.Pattern = "[" & Chr(&HE000) & "-" & Chr(&HF8FF) & "]" とすれば良いのでしょうか? 別の表現方法があるのかなと思って、悩んでいます。

  • 大小まじりの文字列より使用バイトサイズを取得する

    いつもお世話になります。さっそくですが… VB.NETにて DIM Dmy AS String Dmy="あaaあ" 当然ですがDmyのバイト単位のレングスは6となると思います。このバイト単位のレングスを取得する方法を教えて頂けませんでしょうか?(VB6ですとストリングコンバートを使用すると取得可能なのですが…) お願いいたします。

  • C#のnull許容の警告について

    「Visual Studio」のNET6.0の環境でコードを書いています。 static string UserName; という変数の宣言に対して 「null非許容のフィールドUserNameには、コンストラクターの終了時にnull以外の値が入っていなければなりません。フィールドをNULL許容として宣言することをご検討ください。」 という警告を回避するために static string? UserName; というnull条件演算子で対応したのですが、上司に 「トリッキーな方法(?)ではなく、初期化や代入を使え」 と言われてしまい static string UserName = null ; という書き方を試したのですが 「nullリテラルをnull非許容参照型に変換できません」 という警告が出てしまい、警告を出さない書き方が分からず困っている状態です。 どなたか修正方法を教えて頂けないでしょうか? 【ソースコード】 static class Program { static string UserName; static void Name() { Console.WriteLine("ユーザ名を入力してください"); string? enterName = Console.ReadLine(); Console.WriteLine("ユーザ名を入力してください: {0}", enterName); UserName = enterName; } 以下省略

  • NULLか空文字かの判別(DBの値)

    VB.NETで、Access(mdb)のテーブルから DAOでデータ取得し、取得したレコード毎に値のチェック処理をします。 その値がNULLかどうかは、isDBNULL関数を使用すれば判定できますが、 空文字についてはどう判定すればわかりますでしょうか?? String型にキャストして「= ""」で判定しようとしましたが、 空文字の場合だとString型にキャストする際にエラーが発生します。 家で試せる環境にないので、エラーが出るかどうかわからないのですが String.IsNULLOrEmptyで判定できるのでしょうか? これもString型にキャストする必要がありそうなので、エラーが出るようにも思います・・・。 オブジェクト型の値が空文字かどうか判定する方法を教えていただけないでしょうか。

  • Null文字が含まれるCSV(UTF-8)の読込

    いつも参考にさせてもらっています。 よろしくお願いします。 受領したCSVファイルを1行ずつ取込み、加工して出力したいと思っています。 ファイル形式がUTF-8のため、ADODB.Streamを使って下記のように組みました。 -------------------------------------------------------------------------------- Sub testReadUTF8() Dim adoStIn As Object Dim varWork As Variant On Error GoTo ErrLBL: '読込用 Set adoStIn = CreateObject("ADODB.Stream") adoStIn.Charset = "UTF-8"          'Streamで扱う文字コードをutf-8に adoStIn.Open                 'StreamをOPEN adoStIn.LoadFromFile ("D:\test.csv")     'ファイルからStriamにデータを読み込む Do Until adoStIn.EOS             'Streamの末尾まで繰り返す varWork = adoStIn.readText(adReadLine)  'Streamから1行ずつ取込 '//処理~~~~~~ Loop ExitLBL: Exit Sub ErrLBL: 'エラー MsgBox Err.Description & vbCrLf & "(エラーコード " & Err.Number & ")", vbCritical End Sub -------------------------------------------------------------------------------- その際、 readText(adReadLine)  で取り出そうとしている行にNull文字(文字コード:00)が含まれる場合、 処理が固まってしまい、また、ErrLBLにも飛びませんでした。 読み込むCSVをテキストエディタでNull文字を除去したファイルは、正常に読込みができます。 ただし、Null文字の除去もVBAで同時に行いたく、 Replace関数でNull文字を除去すればよいかと、 ・varWork = Replace(adoStIn.readText(adReadLine), vbNullChar, "") ・varWork = Replace(adoStIn.readText(adReadLine), vbNullString, "") ・varWork = Replace(adoStIn.readText(adReadLine), Chr(0), "") ・varWork = Replace(adoStIn.readText(adReadLine), Chr$(0), "") と行ってみましたが、いずれも上記の部分で固まってしまいます。 何かしら、処理する方法はありませんでしょうか?

  • 長い文字列を配列に入れるには?

    VBから長い文字列を送って,c言語で受け取りたいのですが,うまく配列に入れることが出来ません.文字列サイズは最低でも4000バイト必要です. #include <stdio.h> #include <stdlib.h> #include <string.h> //VBから送られてくるデータ char getch[4000]="start1T\tpose 0 0 -5 0 -5 0 -5 0 -5 0 0 0 0 0\ ..省略.. 25\t\n"; void main(void){ char *token; char seps[]="\t\n"; FILE *pose; pose=fopen("pose.txt","a"); if((token=strtok(getch,"\t"))==NULL){ printf("Error File1\n"); exit(1); } printf("%s\n",token); while(strcmp(token,"\n")!=0){ token=strtok(NULL,"\t"); fputs(token,pose); fputs("\n",pose); printf("%s\n",token); } fclose(pose); }

  • undefinedかnullかどう区別できますか?

    JavaScript の教科書に下記のように記載があったのですが、 >>> ページからアンカータグを取得するgetAnchorという関数があったとします。 その際、アンカータグが見つからなかったならば、何を返すべきでしょうか。undefined(未定義)は不自然です。 今度は「該当する値がなかった(=空であった)」という値を、意図して伝えようとしているので、nullを返すべきです。 関数で値が返されなかった場合はundefinedと聞いたのですが上記はそれに該当するように私は思ってしまうのですが、なぜ違うかわかりますか? 関数で値が返されなかった場合とはalert()のように引数がなかった場合という意味でしょうか? それともretunr 変数名などのreturnがない場合という意味でしょうか?

  • 文字列の最後の一字を削除

    string str; str=”abc壁xデスクトップyyy”;//一例 strから最後の一字を取り除くときに 最初から順番に各文字が2バイト文字か1バイト文字かを調べていき最後のバイトが2バイト文字の第2バイトと判明したときに最後の2バイトを除去し最後のバイトが1バイト文字と判明したときにstrの最後の1バイトを除去する ことによってできますがstrが膨大だと時間がかかります 文字列作成時に各文字が2バイト文字なのか1バイト文字なのかをメモっておくのも管理が大変ですし もっと早く最後の文字が1バイト文字なのか2バイト文字なのかを判定する方法は有りませんか?