DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Stringからchar変換について

環境/言語:[C#]
分類:[.NET]

 C#で.NetFrameWorkの
Stringクラスのオブジェクトを、char型変数に変換し、
char型変数を、Stringクラスのオブジェクトに変換
したいのですが、どのようにすればよいかわかりません。
 どなたか御存知ありませんか?
■No2671に返信(kitajiさんの記事)
>  C#で.NetFrameWorkの
> Stringクラスのオブジェクトを、char型変数に変換し、
> char型変数を、Stringクラスのオブジェクトに変換

String.ToCharArray()でCharの配列を取得できます。
あるいは、C#なのでインデクサを使ってs[i]のように各文字にアクセスできます。
(s : string型、i : インデックス)

逆は、ch[]に文字データが入ってるとして、Stringのコンストラクタを使って
string s = new string(ch);
のようにできると思います。

1文字のStringをCharに、Charを1文字のStringにという意味なら、
Convertクラスの変換メソッドなどはいかがでしょうか。

#動作未検証
よねKENさん ありがとうございます。
解決しました。

/*** 先頭3文字を切り取る関数 ***/
public string Left3(string Str)
{
 char[] chars = new char [255];
 chars=Str.ToCharArray();
 chars[3]='\0';
 string s = new string(chars);

 return s;
}

/*** 呼び出し元 ***/
Dim a As New ClassLibrary1.Class1()
Dim str As String = "ABCDEFG"
MsgBox(a.Left3(str))

/* "ABC"がメッセージボックスに表示される */
解決済み!
この内容のメソッドならString.Substringで事足りるのでは?

後、余計なお世話かもしれませんが、このメソッドの実装は
いろいろ問題がありそうです・・・・

> /*** 先頭3文字を切り取る関数 ***/
> public string Left3(string Str)
> {
>  char[] chars = new char [255];

ToCharArrayメソッドでCharの配列を作成して返してくれるので、
この初期化はいらない、というか無駄になります。
ガベージコレクションが起動するまでの間、
このメソッドを使う度に255*4バイトくらい(配列の確保分)ずつメモリ消費していきます。

単発の呼び出しではサイズ的にたいしたことはないかもしれませんが、
あちこちで使われるメソッドでは大きな問題になる可能性もあります。

>  chars=Str.ToCharArray();
>  chars[3]='\0';

.NETのStringは\0で終端を意味するわけではないので、
StringクラスのLengthプロパティの値は3を返しません。

> MsgBox(a.Left3(str))

VBのMsgBoxやMessageBox.Showなどは最終的にはWindows APIのMessageBox関数を
呼んでいるはずなので、たまたま\0を終端として認識してしまっているだけですので、
ご注意下さい。

DOBON.NET | プログラミング道 | プログラミング掲示板