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

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

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

Re[5]: 文字列の不足なバイト数分半角スペース詰めをしたい


(過去ログ 74 を表示中)

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

■43603 / inTopicNo.1)  文字列の不足なバイト数分半角スペース詰めをしたい
  
□投稿者/ やまざき (1回)-(2009/11/13(Fri) 12:32:02)

分類:[.NET 全般] 

Vb.net2003で
ある文字列を取得してその文字列のバイト数を取得し、した時に満たないバイト数分を半角スペースしてcsvファイルに出力するデータとして
取り扱おうと思っているのですが不足バイト数文半角スペースを詰めることができません。
PadRightを使っても文字数分スペース詰めになってしまい困っています。
(例)
dim a As String ="あいう"
dim b As String
dim iByteLength As Integer

'バイト数の取得
iByteLength = System.Text.Encoding.GetEncoding("Shift_JIS").GetByteCount(a)  ←ここでiByteLength = 6

b = a.PadRight(10)

結果
b = "あいうsssssss"(←s:半角スペース1文字を表す)
となるので10バイトの文字列ではなく、13バイトになってしまいます。

解決方法を教えてください。よろしくお願いします。
引用返信 編集キー/
■43605 / inTopicNo.2)  Re[1]: 文字列の不足なバイト数分半角スペース詰めをしたい
□投稿者/ επιστημη (2272回)-(2009/11/13(Fri) 12:36:27)
επιστημη さんの Web サイト
ナニに困ってんだかわかんね。

> 'バイト数の取得
> iByteLength = System.Text.Encoding.GetEncoding("Shift_JIS").GetByteCount(a)  ←ここでiByteLength = 6

ここで iByteLength が求まってるんだから 10-iByteLength 個のスペースを繋いであげたらいいんじゃね?

引用返信 編集キー/
■43607 / inTopicNo.3)  Re[2]: 文字列の不足なバイト数分半角スペース詰めをしたい
□投稿者/ やまざき (3回)-(2009/11/13(Fri) 12:49:23)
επιστημη さん
返信ありがとうございます。

伝わりにくい文章で申し訳ないです。
言いたかったことはPadRightのようなものでバイト数分を編集できるものがないかというのが
質問したかったことです。

不足バイト数分の半角スペースを連結させるやり方もあるのですが、ロジックをなるべく少なくしたかったので質問させてもらいました。
引用返信 編集キー/
■43609 / inTopicNo.4)  Re[3]: 文字列の不足なバイト数分半角スペース詰めをしたい
□投稿者/ επιστημη (2273回)-(2009/11/13(Fri) 12:59:00)
επιστημη さんの Web サイト
> ロジックをなるべく少なくしたかったので質問させてもらいました。

b = a & New String(" "c, 10-System.Text.Encoding.GetEncoding("Shift_JIS").GetByteCount(a))

十分コンパクトやと思うがなぁ...

引用返信 編集キー/
■43610 / inTopicNo.5)  Re[4]: 文字列の不足なバイト数分半角スペース詰めをしたい
□投稿者/ やまざき (4回)-(2009/11/13(Fri) 13:20:10)
επιστημηさん

返信ありがとうございます。
VBの知識が無いので
b = a & New String(" "c, 10-System.Text.Encoding.GetEncoding("Shift_JIS").GetByteCount(a))
のようなロジックが浮かびませんでした。

教えていただきありがとうございます。
解決済み
引用返信 編集キー/
■43611 / inTopicNo.6)  Re[5]: 文字列の不足なバイト数分半角スペース詰めをしたい
□投稿者/ みきぬ (650回)-(2009/11/13(Fri) 13:28:17)
2009/11/13(Fri) 13:28:42 編集(投稿者)

あらかじめ10バイト分の空白を用意しておいて、そこに上書きしちゃうとか。

Dim sjis As Encoding = Encoding.GetEncoding("Shift-JIS")
Dim a As Byte() = sjis.GetBytes("あいう")
Dim b As Byte() = sjis.GetBytes(" ") '半角スペース10個

Array.Copy(a, b, a.Length)

Console.WriteLine("[" & sjis.GetString(b) & "]")


----- おっと、解決済みになってたのね。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -