|
.NET TIPS
文字列中の1文字を取得するには?
デジタルアドバンテージ
2004/01/09 |
|
|
ある文字列から、指定した位置にある1文字を取得するには、C#ではStringクラス(System名前空間)に実装されているインデクサを利用する。インデクサにより文字列(String)を文字(Char)の配列のようにして扱うことができる。
次のサンプル・プログラムは、十二支の漢字を並べた12文字の文字列から、今年のえとに該当する1文字を表示する。
// getchar.cs
using System;
public class GetCharInString {
static void Main() {
string eto = "子丑寅卯辰巳午未申酉戌亥";
int index = (DateTime.Now.Year - 4) % 12;
Console.WriteLine(eto[index]); // 出力例:申
}
}
// コンパイル方法:csc getchar.cs
|
|
文字列に対してインデクサを利用したC#のサンプル・プログラム(getchar.cs) |
|
Visual Basic .NET(以下VB.NET)ではインデクサに直接アクセスできない。代わりに、文字列に対してStringクラスのCharsプロパティを利用する。このプロパティのパラメータには取得したい文字の位置を指定する。
' getchar.vb
Imports System
Imports Microsoft.VisualBasic
Class GetCharInString
Shared Sub Main
Dim eto As String = "子丑寅卯辰巳午未申酉戌亥"
Dim index As Integer = (Now.Year - 4) Mod 12
Console.WriteLine(eto.Chars(index)) ' 出力例:申
Console.WriteLine(GetChar(eto, index + 1)) ' 出力例:申
End Sub
End Class
' コンパイル方法:vbc getchar.vb
|
|
文字列に対してCharsプロパティを利用したVB.NETのサンプル・プログラム(getchar.vb) |
|
上記のプログラムの最後に示したように、VB.NETには文字列中の文字を取得するためのGetChar関数(関数の第1パラメータに対象となる文字列、第2パラメータに取得する文字の位置を1始まりの番号で指定する)も用意されているが、わざわざこの関数を使う必要はないだろう。
ちなみに、あるクラスがインデクサを実装している場合、VB.NETからはデフォルトではそれをItemプロパティとしてアクセスできる。この「Item」という名前は、IndexerName属性(System.Runtime.CompilerServices名前空間)をインデクサの定義の前に付けることにより変更することができる。
カテゴリ:クラス・ライブラリ 処理対象:文字列
使用ライブラリ:Stringクラス(System名前空間)
使用ライブラリ:GetChar関数(Microsoft.VisualBasic名前空間)
使用ライブラリ:IndexerName属性(System.Runtime.CompilerServices名前空間)
|
|
generated by
|
|
Insider.NET 記事ランキング
本日
月間