数値・文字列関連



ヌル判定演算子

console.writeline( s ?? "ヌルです。");


ユーザコントロールで、Textプロパティを使う

[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public override string Text {
    get {...
    set {...


文字列@

文字列に@をつけると、¥がそのまま使われる。
つけないと、¥の後ろがエスケープシーケンスになる。


特殊パスの取得

システムフォルダ
System.Environmemt.GetFolderPath
プログラムを置いてあるパス
Application.StartupPath
プログラムを起動したパス
DirectoryInfo(".");



ファイル操作(コピー、移動、削除)

   string src = @"c:\test.txt";
   string dst = @"c:\test2.txt";

   // ファイルコピー
   File.Sopy(src, dst);
   
   // ファイルの移動
   File.Move(src, dst);
   
   // ファイルの削除
   File.Delete(src);

ファイル・フォルダの有無を調べる

  • Windows環境では、大文字/小文字の区別はない。
  • フォルダ末尾の'\'は、あってもなくても可能
  • 相対パスでも絶対パスでも可能

   // ファイルの有無を調べる
   string fileName = @"c:\boot.ini";
   if (System.IO.File.Exists(fileName) != false) {
       MessageBox.Show(string.Format("({0})は存在する。", fileName));
   }
   // フォルダの有無を調べる
    string folderName = @"c:\Windows\";
   if (System.IO.Directory.Exists(folderName) != false) {
       MessageBox.Show(string.Format("({0})は存在する。", folderName));
   }




文字列とバイト配列の相互変換

   // 文字列→バイト配列
   string s = "abc";
   byte[] b = Encording.ASCII.GetBytes(s);
   // バイト配列→文字列
   byte [] b = new byte[] { 'a', 'b', 'c' };
   string s = Encording.ASCII.GetString(b);

文字列を数値に変換

   // 10進文字列を、数値に変換(Parseメソッドを使用する)
   string s = "123";
   int i = int.Parse(s);
   string s = "1.23";
   double d = double.Parse(s);
   
   // 16進文字列を、数値に変換(Convertクラスを使用する)
   string s = "0x12";    // ←先頭に"0x"がなくても可
   int i = Convert.ToInt32(s);
   // 2進文字列を、数値に変換
   string s = "1010101";
   int i = Convert.ToInt32(s);

数値を文字列に変換

   // 数値を、10進文字列に変換
   int i = 123;string s = i.ToString();double d = 123.45;string s = d.ToString(); 
   // "123.45"string s = d.ToString("f1");   // "123.5" (四捨五入)
   // 数値を、16進文字列に変換
   int i = 123;
   string s = i.ToString("x");    // "7b"   小文字になる
   string s = i.ToString("X");    // "7B"   大文字になる
   string s = i.ToString("x04");  // "007b" 桁数の指定+0埋め
   // 数値を、2進数に変換
   int i = 123;
   string s = Convert.ToString(i,2);  // "1111011"
   string s = Convert.ToString(i,2).PadLeft(16,'0');                       // "0000000001111011" 桁数指定+0埋め


文字列のフォーマット(printfみたいな…)

指定する書式 書式指定項目の記述例 出力例
幅指定で右詰め String.Format("{0, 4}", num) “ 1”
幅指定で左詰め String.Format("{0, -4}", num) “1 ”
0埋め String.Format("{0:D4}", num)
または
String.Format("{0:0000}", num) “0001”
幅指定かつ0埋め String.Format("{0, 8:D4}", num) “ 0001”

数値の書式指定でよく使用される書式指定項目の記述例
   string str = string.Format("{0},{1}", i, j);
   //string str = str(boost::format("%05d") % i);
   //cout << boost::format(...


乱数を得るには

   System.Random rnd = new System.Random();
   int value1 = rnd.Next();        // 0からInt.MaxValueまでの乱数を返す
   int value2 = rnd.Next(100);     // 0以上、100未満の乱数を返す
   int value2 = rnd.Next(10,100);  // 10以上、100未満の乱数を返す


四捨五入について

Math.Roundとか、Decimal.Roundは、四捨五入ではない

<MSDNより引用>
このメソッドの動作は、IEEE 規格 754、セクション 4 に従います。このような丸めは、近似値への丸めまたは銀行の丸めと呼ばれることがあります。
   /// <summary>数値の四捨五入:適当Ver</summary>
   /// <param name="value">数値</param>
   /// <param name="place">桁数(0=整数</param>
   double RoundOff(double value, uint place) {
       return Convert.ToDouble(value.ToString("f"+place.ToString()));
   }
   /// <summary>数値の四捨五入:真面目Ver</summary>
   /// <param name="value">数値</param>
   /// <param name="place">桁数(0=整数</param>
   double RoundOff(double value, uint place) {
       double d = Math.Pow(10, (double)place); 
       return Math.Floor(value * d + 0.5) / d; 
   }

タグ:

C#
最終更新:2007年10月12日 09:48