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

文字列の書式指定について

環境/言語:[WindowsXP、NET Framework(2.0.50727)]
分類:[.NET]

皆様はじめまして。

文字列の書式指定について教えていただきたいことがあります。

String.Formatを使用して下記のような変換を行っていました。
Dim str1 as String = "1234567"
Dim str2 as String = ""

str2 = String.Format("{0:000-0000}", CType(str1, Integer))
'str2 = 123-4567

しかし、str1に文字列が含まれるとエラーになってしまいます。
下記例のように文字列が含まれても正常に書式指定ができる方法を教えて頂けないでしょうか?
例)
str1 = "123ABCD"
→str2 = "123-ABCD"
文字列(String)に対して書式指定する処理は標準ライブラリでは提供されていないので、自分で切り貼りすることになります。
Substring メソッドが便利でしょう。
また、元文字列の長さを確認しておいた方が安全です。
// 多分 ASCII の範囲内だけしか扱わないだろうから、サロゲートペアとかは省略。
■No24463に返信(Hongliangさんの記事)
> 文字列(String)に対して書式指定する処理は標準ライブラリでは提供されていないので、自分で切り貼りすることになります。
> Substring メソッドが便利でしょう。
> また、元文字列の長さを確認しておいた方が安全です。
> // 多分 ASCII の範囲内だけしか扱わないだろうから、サロゲートペアとかは省略。

早速のお返事ありがとうございます。
やはり文字列(String)に対して書式指定する処理は標準でないのですね。
ありがとうございました。
解決済み!
  • 題名: Re[1]: 文字列の書式指定について
  • 著者: 魔界の仮面弁士
  • 日時: 2009/04/27 16:06:25
  • ID: 24465
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
2009/04/27(Mon) 16:17:26 編集(投稿者)

■No24462に返信(MIWAさんの記事)
> String.Formatを使用して下記のような変換を行っていました。
> Dim str1 as String = "1234567"
> Dim str2 as String = ""
> str2 = String.Format("{0:000-0000}", CType(str1, Integer))

数値化の際は、『CType(str1, Integer)』では無く、
Integer.TryParse を使うようにしましょう。


> 下記例のように文字列が含まれても正常に書式指定ができる方法を教えて頂けないでしょうか?
str1 が 7 文字固定なら、SubString メソッドなり、Left/Mid/Right 関数なりで
文字列を切り出してやれば良いかと。

Dim str2 As String = str1.Substring(0, 3) & "-" & str1.Substring(3)

----------------
《追記》
既に解決済みだったようなので、解決済みチェックを入れるついでに別解。

str2 = System.Text.RegularExpressions.Regex.Replace(str1, "^(...)(....)$", "$1-$2")
解決済み!

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