C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

VBで変数に代入した文字コードを文字列に戻す方法

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■87728 / inTopicNo.1)  VBで変数に代入した文字コードを文字列に戻す方法
  
□投稿者/ 秋田犬 (1回)-(2018/06/25(Mon) 16:24:47)

分類:[.NET 全般] 

初投稿失礼します。
お世話になります。

Visual Basicで変数に代入した文字コードを文字列に戻す方法を教えていただきたいです。
使用しているのはVisual Studio2015、.Net framework 3.0、windows8.1、(DB接続は)Oracleです。 


@データベースに接続する際に、接続するための情報が入ったファイルにパスを指定して、
そこから情報を取得するFunction関数(Function〜End Function)の中で使用している変数aの中身を変更したいです。

Dim a As String = Directory.GetCurrentDirectory()

※変数aには「C:¥......¥○○」(¥マークは半角)というファイルパスが入っていて、○○の部分だけを変更したいです。
※中身は直接弄れなかったため、弄るためのプログラムを作成している感じです。


Aこの変数aの中身の一部を変えるために、まず中身を文字コード(ASCII)に変換しました。

Dim enc As Text.Encoding = System.Text.Encoding.GetEncoding(932)
Dim bytes As Byte() = enc.GetBytes(a)


Bその次に、String.Replaceメソッドで○○を××に置き換えるためにString型へと変換を行い、

Dim strBytes As String = BitConverter.ToString(bytes)


C○○を××に置き換えました。

Dim r1 As String = strBytes.Replace("○○", "××")



ここまでは順調に上手くいったのですが、この書き換えた文字コードを文字列に戻す方法が分かりません。
調べたところ、文字コードを文字列に戻すにはChr関数を使うということが分かったのですが、
Debug.Print Chr(r1) と書いたところ、Chr(r1)下部に赤波線が引かれ、引数として認識してくれなかったため、
ここには文字コードそのものを指定しないといけないのだろうということが分かりました。

しかし、変数aの中身はフォルダが置かれる場所によって変わるので、変数r1に文字コードを代入したまま文字列に変換したいのですが、何か良い方法はないでしょうか?

vbを使い始めてまだ数週間の初心者なので、よければサンプルコードなどをご教授いただけましたら幸いです。
よろしくお願いします。

引用返信 編集キー/
■87730 / inTopicNo.2)  Re[1]: VBで変数に代入した文字コードを文字列に戻す方法
□投稿者/ Hongliang (652回)-(2018/06/25(Mon) 16:40:05)
目的として説明されていることと、取られている手段がさっぱり結びつかないのですが……。


> Dim a As String = Directory.GetCurrentDirectory()
>
> ※変数aには「C:¥......¥○○」(¥マークは半角)というファイルパスが入っていて、○○の部分だけを変更したいです。

であれば、
Dim dirName As String = Path.GetDirectoryName(a)
Dim lastName As String = Path.GetFileName(a) ' GetFileNameってなってるけど、○○がフォルダでも問題ない
でそれぞれ「c:\......」と「○○」を取得できます。

パスの結合は、
Dim combined As String = Path.Combine(dirName, "変更後の文字列")
' combined = "c:\......\変更後の文字列"
というふうにできます。
引用返信 編集キー/
■87731 / inTopicNo.3)  Re[2]: VBで変数に代入した文字コードを文字列に戻す方法
□投稿者/ 秋田犬 (2回)-(2018/06/25(Mon) 17:33:32)
No87730 (Hongliang さん) に返信

Hongliangさん、回答ありがとうございます!


> 目的として説明されていることと、取られている手段がさっぱり結びつかないのですが……。

こちらに関しては私の知識不足です…申し訳ありません。



>>Dim a As String = Directory.GetCurrentDirectory()
>>
>>※変数aには「C:¥......¥○○」(¥マークは半角)というファイルパスが入っていて、○○の部分だけを変更したいです。
>
> であれば、
> Dim dirName As String = Path.GetDirectoryName(a)
> Dim lastName As String = Path.GetFileName(a) ' GetFileNameってなってるけど、○○がフォルダでも問題ない
> でそれぞれ「c:\......」と「○○」を取得できます。
>
> パスの結合は、
> Dim combined As String = Path.Combine(dirName, "変更後の文字列")
> ' combined = "c:\......\変更後の文字列"
> というふうにできます。


先週から悩んでいたのですっきりしました…!
ありがとうございます。

ただ、教えていただいたものと同様に書いてみたのですが、「ORA-12541:TNS:リスナーがありません。」というエラーが出てしまいました。(エラーの場所はエラーボックスが出てこなかったため不明です…。)
そこで、MessageBox.show(combined)で確認したところ、変数combinedには「"変更後の文字列"」しか入っていませんでした。

この理由が分かる方いましたら教えていただきたいです。
引用返信 編集キー/
■87732 / inTopicNo.4)  Re[3]: VBで変数に代入した文字コードを文字列に戻す方法
□投稿者/ 秋田犬 (4回)-(2018/06/25(Mon) 18:00:31)
No87731 (秋田犬 さん) に返信

> ただ、教えていただいたものと同様に書いてみたのですが、「ORA-12541:TNS:リスナーがありません。」というエラーが出てしまいました。(エラーの場所はエラーボックスが出てこなかったため不明です…。)
> そこで、MessageBox.show(combined)で確認したところ、変数combinedには「"変更後の文字列"」しか入っていませんでした。


申し訳ないです、私が勘違いしていました。
Path.Combine(String,String)では、ファイル名が「¥」で始まる時はその文字列がそのまま返される(引用:https://dobon.net/vb/dotnet/file/pathcombine.html#section6https://dobon.net/vb/dotnet/file/pathcombine.html#section6)ということを知らずに、"変更後の文字列"の先頭に「¥」をつけてしまっていました…。

書き換え後は無事に接続することができましたので、Hongliangさんには今一度お礼申し上げます。
ありがとうございました!
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ