3

整数をC#の同等のASCII / Unicode文字としてフォーマットする方法はありますか?たとえば、次のコードがある場合:

int n = 65;
string format = ""; // what?

string s = string.Format(format, n);

format単一の文字「A」が書き込まれるようにするには、文字列に何を入力する必要がありますか?s基本的に、Cで次のことを行うのと同等のものを探しています。

int n = 65;
char s[2];
char format = "%c";

sprintf(s, format, n); /* s <- 'A' */

編集

「charにキャストする」という明白な答えは役に立たないので、私がやろうとしていることについてもう少し説明する必要があります。

銀行口座のチェックディジットを表す整数値がありますが、一部の国では文字として出力し、その他の国では(0が埋め込まれた)数字列として出力する必要がある状況があります。フォーマット文字列を変更するだけで2つを切り替える方法があるのではないかと思います。そうすれば、国コードをキーにした適切なフォーマット文字列の辞書を保持できます。

編集2

(Odedの場合)このようなもの..。

IDictionary<string, string> ccFormat = new Dictionary<string, string>()
{
  { "GB", "{0:D}" },  // 0-9
  { "PT", "{0:D2}" }, // 00-99
  { "US", "{0:D3}" }, // 000-999
  { "IT", ???? }      // A-Z -- What should ???? be?
};


string FormatCheckDigits(int digits, string country)
{
  return string.Format(ccFormat[country], digits);
}

現在、私はメソッドにいくつかの特別なケースのコードを持って????います:null

string FormatCheckDigits(int digits, string country)
{
  string format = ccFormat[country];

  if (string.IsNullOrEmpty(format)) 
  {
    // special case: format as A-Z
    return ((char) digits).ToString();
  }
  else 
  {
    // Use retrieved format string
    return string.Format(format, digits);
  }
}
4

4 に答える 4

6

intをにキャストできますchar

string s = ((char)n).ToString();

string.Format整数を文字としてフォーマットするように指示する方法はありません。これに役立つカスタムまたは標準の数値書式文字列はありません。

現在のソリューションはシンプルで機能するため、より複雑なオプションに取り組み始めない限り、そのままにしておく必要があります。その場合は、国の正しい表現を返す抽象化を導入する必要がある場合があります (たとえば、CountryCheckDigitFormatter国と国ごとのカスタムToStringメソッドを保持する a など)。

于 2012-11-29T14:27:03.493 に答える
2

これは受け入れられますか?

string a = Char.ConvertFromUtf32(65);

Console.WriteLine(a); //prints 'A'
于 2012-11-29T14:26:51.073 に答える
1

キャラクターを取得するには、キャストするだけです:

char c = (char) n;

それを文字列として取得する必要がある場合は、次のように呼び出すことができますToString

string x = c.ToString();
于 2012-11-29T14:26:48.060 に答える
1

簡単:

int i = 65;
char c = Convert.ToChar(i);
于 2012-11-29T14:35:12.070 に答える