Char 構造体
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
文字を UTF-16 コード単位で表します。
public value class char : IComparable, IComparable<char>, IConvertible, IEquatable<char>
public value class char : IComparable, IComparable<char>, IConvertible, IEquatable<char>, ISpanFormattable
public value class char : IComparable<char>, IConvertible, IEquatable<char>, IParsable<char>, ISpanParsable<char>, System::Numerics::IAdditionOperators<char, char, char>, System::Numerics::IAdditiveIdentity<char, char>, System::Numerics::IBinaryInteger<char>, System::Numerics::IBinaryNumber<char>, System::Numerics::IBitwiseOperators<char, char, char>, System::Numerics::IComparisonOperators<char, char, bool>, System::Numerics::IDecrementOperators<char>, System::Numerics::IDivisionOperators<char, char, char>, System::Numerics::IEqualityOperators<char, char, bool>, System::Numerics::IIncrementOperators<char>, System::Numerics::IMinMaxValue<char>, System::Numerics::IModulusOperators<char, char, char>, System::Numerics::IMultiplicativeIdentity<char, char>, System::Numerics::IMultiplyOperators<char, char, char>, System::Numerics::INumber<char>, System::Numerics::INumberBase<char>, System::Numerics::IShiftOperators<char, int, char>, System::Numerics::ISubtractionOperators<char, char, char>, System::Numerics::IUnaryNegationOperators<char, char>, System::Numerics::IUnaryPlusOperators<char, char>, System::Numerics::IUnsignedNumber<char>
public value class char : IComparable<char>, IConvertible, IEquatable<char>, IParsable<char>, ISpanParsable<char>, IUtf8SpanParsable<char>, System::Numerics::IAdditionOperators<char, char, char>, System::Numerics::IAdditiveIdentity<char, char>, System::Numerics::IBinaryInteger<char>, System::Numerics::IBinaryNumber<char>, System::Numerics::IBitwiseOperators<char, char, char>, System::Numerics::IComparisonOperators<char, char, bool>, System::Numerics::IDecrementOperators<char>, System::Numerics::IDivisionOperators<char, char, char>, System::Numerics::IEqualityOperators<char, char, bool>, System::Numerics::IIncrementOperators<char>, System::Numerics::IMinMaxValue<char>, System::Numerics::IModulusOperators<char, char, char>, System::Numerics::IMultiplicativeIdentity<char, char>, System::Numerics::IMultiplyOperators<char, char, char>, System::Numerics::INumber<char>, System::Numerics::INumberBase<char>, System::Numerics::IShiftOperators<char, int, char>, System::Numerics::ISubtractionOperators<char, char, char>, System::Numerics::IUnaryNegationOperators<char, char>, System::Numerics::IUnaryPlusOperators<char, char>, System::Numerics::IUnsignedNumber<char>
public value class char : IComparable, IConvertible
public value class char : IComparable, IComparable<char>, IEquatable<char>
public struct Char : IComparable, IComparable<char>, IConvertible, IEquatable<char>
public readonly struct Char : IComparable, IComparable<char>, IConvertible, IEquatable<char>
public readonly struct Char : IComparable, IComparable<char>, IConvertible, IEquatable<char>, ISpanFormattable
public readonly struct Char : IComparable<char>, IConvertible, IEquatable<char>, IParsable<char>, ISpanParsable<char>, System.Numerics.IAdditionOperators<char,char,char>, System.Numerics.IAdditiveIdentity<char,char>, System.Numerics.IBinaryInteger<char>, System.Numerics.IBinaryNumber<char>, System.Numerics.IBitwiseOperators<char,char,char>, System.Numerics.IComparisonOperators<char,char,bool>, System.Numerics.IDecrementOperators<char>, System.Numerics.IDivisionOperators<char,char,char>, System.Numerics.IEqualityOperators<char,char,bool>, System.Numerics.IIncrementOperators<char>, System.Numerics.IMinMaxValue<char>, System.Numerics.IModulusOperators<char,char,char>, System.Numerics.IMultiplicativeIdentity<char,char>, System.Numerics.IMultiplyOperators<char,char,char>, System.Numerics.INumber<char>, System.Numerics.INumberBase<char>, System.Numerics.IShiftOperators<char,int,char>, System.Numerics.ISubtractionOperators<char,char,char>, System.Numerics.IUnaryNegationOperators<char,char>, System.Numerics.IUnaryPlusOperators<char,char>, System.Numerics.IUnsignedNumber<char>
public readonly struct Char : IComparable<char>, IConvertible, IEquatable<char>, IParsable<char>, ISpanParsable<char>, IUtf8SpanParsable<char>, System.Numerics.IAdditionOperators<char,char,char>, System.Numerics.IAdditiveIdentity<char,char>, System.Numerics.IBinaryInteger<char>, System.Numerics.IBinaryNumber<char>, System.Numerics.IBitwiseOperators<char,char,char>, System.Numerics.IComparisonOperators<char,char,bool>, System.Numerics.IDecrementOperators<char>, System.Numerics.IDivisionOperators<char,char,char>, System.Numerics.IEqualityOperators<char,char,bool>, System.Numerics.IIncrementOperators<char>, System.Numerics.IMinMaxValue<char>, System.Numerics.IModulusOperators<char,char,char>, System.Numerics.IMultiplicativeIdentity<char,char>, System.Numerics.IMultiplyOperators<char,char,char>, System.Numerics.INumber<char>, System.Numerics.INumberBase<char>, System.Numerics.IShiftOperators<char,int,char>, System.Numerics.ISubtractionOperators<char,char,char>, System.Numerics.IUnaryNegationOperators<char,char>, System.Numerics.IUnaryPlusOperators<char,char>, System.Numerics.IUnsignedNumber<char>
[System.Serializable]
public struct Char : IComparable, IConvertible
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public struct Char : IComparable, IComparable<char>, IConvertible, IEquatable<char>
public struct Char : IComparable, IComparable<char>, IEquatable<char>
type char = struct
interface IConvertible
type char = struct
interface IConvertible
interface ISpanFormattable
interface IFormattable
type char = struct
interface IConvertible
interface IFormattable
interface IParsable<char>
interface ISpanFormattable
interface ISpanParsable<char>
interface IAdditionOperators<char, char, char>
interface IAdditiveIdentity<char, char>
interface IBinaryInteger<char>
interface IBinaryNumber<char>
interface IBitwiseOperators<char, char, char>
interface IComparisonOperators<char, char, bool>
interface IEqualityOperators<char, char, bool>
interface IDecrementOperators<char>
interface IDivisionOperators<char, char, char>
interface IIncrementOperators<char>
interface IModulusOperators<char, char, char>
interface IMultiplicativeIdentity<char, char>
interface IMultiplyOperators<char, char, char>
interface INumber<char>
interface INumberBase<char>
interface ISubtractionOperators<char, char, char>
interface IUnaryNegationOperators<char, char>
interface IUnaryPlusOperators<char, char>
interface IShiftOperators<char, int, char>
interface IMinMaxValue<char>
interface IUnsignedNumber<char>
type char = struct
interface IConvertible
interface IFormattable
interface IParsable<char>
interface ISpanFormattable
interface ISpanParsable<char>
interface IAdditionOperators<char, char, char>
interface IAdditiveIdentity<char, char>
interface IBinaryInteger<char>
interface IBinaryNumber<char>
interface IBitwiseOperators<char, char, char>
interface IComparisonOperators<char, char, bool>
interface IEqualityOperators<char, char, bool>
interface IDecrementOperators<char>
interface IDivisionOperators<char, char, char>
interface IIncrementOperators<char>
interface IModulusOperators<char, char, char>
interface IMultiplicativeIdentity<char, char>
interface IMultiplyOperators<char, char, char>
interface INumber<char>
interface INumberBase<char>
interface ISubtractionOperators<char, char, char>
interface IUnaryNegationOperators<char, char>
interface IUnaryPlusOperators<char, char>
interface IUtf8SpanFormattable
interface IUtf8SpanParsable<char>
interface IShiftOperators<char, int, char>
interface IMinMaxValue<char>
interface IUnsignedNumber<char>
[<System.Serializable>]
type char = struct
interface IConvertible
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type char = struct
interface IConvertible
type char = struct
Public Structure Char
Implements IComparable, IComparable(Of Char), IConvertible, IEquatable(Of Char)
Public Structure Char
Implements IComparable, IComparable(Of Char), IConvertible, IEquatable(Of Char), ISpanFormattable
Public Structure Char
Implements IAdditionOperators(Of Char, Char, Char), IAdditiveIdentity(Of Char, Char), IBinaryInteger(Of Char), IBinaryNumber(Of Char), IBitwiseOperators(Of Char, Char, Char), IComparable(Of Char), IComparisonOperators(Of Char, Char, Boolean), IConvertible, IDecrementOperators(Of Char), IDivisionOperators(Of Char, Char, Char), IEqualityOperators(Of Char, Char, Boolean), IEquatable(Of Char), IIncrementOperators(Of Char), IMinMaxValue(Of Char), IModulusOperators(Of Char, Char, Char), IMultiplicativeIdentity(Of Char, Char), IMultiplyOperators(Of Char, Char, Char), INumber(Of Char), INumberBase(Of Char), IParsable(Of Char), IShiftOperators(Of Char, Integer, Char), ISpanParsable(Of Char), ISubtractionOperators(Of Char, Char, Char), IUnaryNegationOperators(Of Char, Char), IUnaryPlusOperators(Of Char, Char), IUnsignedNumber(Of Char)
Public Structure Char
Implements IAdditionOperators(Of Char, Char, Char), IAdditiveIdentity(Of Char, Char), IBinaryInteger(Of Char), IBinaryNumber(Of Char), IBitwiseOperators(Of Char, Char, Char), IComparable(Of Char), IComparisonOperators(Of Char, Char, Boolean), IConvertible, IDecrementOperators(Of Char), IDivisionOperators(Of Char, Char, Char), IEqualityOperators(Of Char, Char, Boolean), IEquatable(Of Char), IIncrementOperators(Of Char), IMinMaxValue(Of Char), IModulusOperators(Of Char, Char, Char), IMultiplicativeIdentity(Of Char, Char), IMultiplyOperators(Of Char, Char, Char), INumber(Of Char), INumberBase(Of Char), IParsable(Of Char), IShiftOperators(Of Char, Integer, Char), ISpanParsable(Of Char), ISubtractionOperators(Of Char, Char, Char), IUnaryNegationOperators(Of Char, Char), IUnaryPlusOperators(Of Char, Char), IUnsignedNumber(Of Char), IUtf8SpanParsable(Of Char)
Public Structure Char
Implements IComparable, IConvertible
Public Structure Char
Implements IComparable, IComparable(Of Char), IEquatable(Of Char)
- 継承
- 属性
- 実装
-
IComparable IComparable<Char> IConvertible IEquatable<Char> IFormattable ISpanFormattable IComparable<TSelf> IEquatable<TSelf> IParsable<Char> IParsable<TSelf> ISpanParsable<Char> ISpanParsable<TSelf> IAdditionOperators<Char,Char,Char> IAdditionOperators<TSelf,TSelf,TSelf> IAdditiveIdentity<Char,Char> IAdditiveIdentity<TSelf,TSelf> IBinaryInteger<Char> IBinaryNumber<Char> IBinaryNumber<TSelf> IBitwiseOperators<Char,Char,Char> IBitwiseOperators<TSelf,TSelf,TSelf> IComparisonOperators<Char,Char,Boolean> IComparisonOperators<TSelf,TSelf,Boolean> IDecrementOperators<Char> IDecrementOperators<TSelf> IDivisionOperators<Char,Char,Char> IDivisionOperators<TSelf,TSelf,TSelf> IEqualityOperators<Char,Char,Boolean> IEqualityOperators<TSelf,TOther,TResult> IEqualityOperators<TSelf,TSelf,Boolean> IIncrementOperators<Char> IIncrementOperators<TSelf> IMinMaxValue<Char> IModulusOperators<Char,Char,Char> IModulusOperators<TSelf,TSelf,TSelf> IMultiplicativeIdentity<Char,Char> IMultiplicativeIdentity<TSelf,TSelf> IMultiplyOperators<Char,Char,Char> IMultiplyOperators<TSelf,TSelf,TSelf> INumber<Char> INumber<TSelf> INumberBase<Char> INumberBase<TSelf> IShiftOperators<Char,Int32,Char> IShiftOperators<TSelf,Int32,TSelf> ISubtractionOperators<Char,Char,Char> ISubtractionOperators<TSelf,TSelf,TSelf> IUnaryNegationOperators<Char,Char> IUnaryNegationOperators<TSelf,TSelf> IUnaryPlusOperators<Char,Char> IUnaryPlusOperators<TSelf,TSelf> IUnsignedNumber<Char> IUtf8SpanFormattable IUtf8SpanParsable<Char> IUtf8SpanParsable<TSelf>
例
次のコード例では、 のメソッドの一部を示します Char。
using namespace System;
int main()
{
char chA = 'A';
char ch1 = '1';
String^ str = "test string";
Console::WriteLine( chA.CompareTo( 'B' ) ); // Output: "-1" (meaning 'A' is 1 less than 'B')
Console::WriteLine( chA.Equals( 'A' ) ); // Output: "True"
Console::WriteLine( Char::GetNumericValue( ch1 ) ); // Output: "1"
Console::WriteLine( Char::IsControl( '\t' ) ); // Output: "True"
Console::WriteLine( Char::IsDigit( ch1 ) ); // Output: "True"
Console::WriteLine( Char::IsLetter( ',' ) ); // Output: "False"
Console::WriteLine( Char::IsLower( 'u' ) ); // Output: "True"
Console::WriteLine( Char::IsNumber( ch1 ) ); // Output: "True"
Console::WriteLine( Char::IsPunctuation( '.' ) ); // Output: "True"
Console::WriteLine( Char::IsSeparator( str, 4 ) ); // Output: "True"
Console::WriteLine( Char::IsSymbol( '+' ) ); // Output: "True"
Console::WriteLine( Char::IsWhiteSpace( str, 4 ) ); // Output: "True"
Console::WriteLine( Char::Parse( "S" ) ); // Output: "S"
Console::WriteLine( Char::ToLower( 'M' ) ); // Output: "m"
Console::WriteLine( 'x' ); // Output: "x"
}
using System;
public class CharStructureSample
{
public static void Main()
{
char chA = 'A';
char ch1 = '1';
string str = "test string";
Console.WriteLine(chA.CompareTo('B')); //----------- Output: "-1" (meaning 'A' is 1 less than 'B')
Console.WriteLine(chA.Equals('A')); //----------- Output: "True"
Console.WriteLine(Char.GetNumericValue(ch1)); //----------- Output: "1"
Console.WriteLine(Char.IsControl('\t')); //----------- Output: "True"
Console.WriteLine(Char.IsDigit(ch1)); //----------- Output: "True"
Console.WriteLine(Char.IsLetter(',')); //----------- Output: "False"
Console.WriteLine(Char.IsLower('u')); //----------- Output: "True"
Console.WriteLine(Char.IsNumber(ch1)); //----------- Output: "True"
Console.WriteLine(Char.IsPunctuation('.')); //----------- Output: "True"
Console.WriteLine(Char.IsSeparator(str, 4)); //----------- Output: "True"
Console.WriteLine(Char.IsSymbol('+')); //----------- Output: "True"
Console.WriteLine(Char.IsWhiteSpace(str, 4)); //----------- Output: "True"
Console.WriteLine(Char.Parse("S")); //----------- Output: "S"
Console.WriteLine(Char.ToLower('M')); //----------- Output: "m"
Console.WriteLine('x'.ToString()); //----------- Output: "x"
}
}
open System
let chA = 'A'
let ch1 = '1'
let str = "test string"
printfn $"{chA.CompareTo 'B'}" //----------- Output: "-1" (meaning 'A' is 1 less than 'B')
printfn $"{chA.Equals 'A'}" //----------- Output: "True"
printfn $"{Char.GetNumericValue ch1}" //----------- Output: "1"
printfn $"{Char.IsControl '\t'}" //----------- Output: "True"
printfn $"{Char.IsDigit ch1}" //----------- Output: "True"
printfn $"{Char.IsLetter ','}" //----------- Output: "False"
printfn $"{Char.IsLower 'u'}" //----------- Output: "True"
printfn $"{Char.IsNumber ch1}" //----------- Output: "True"
printfn $"{Char.IsPunctuation '.'}" //----------- Output: "True"
printfn $"{Char.IsSeparator(str, 4)}" //----------- Output: "True"
printfn $"{Char.IsSymbol '+'}" //----------- Output: "True"
printfn $"{Char.IsWhiteSpace(str, 4)}" //----------- Output: "True"
printfn $"""{Char.Parse "S"}""" //----------- Output: "S"
printfn $"{Char.ToLower 'M'}" //----------- Output: "m"
printfn $"{'x'}" //----------- Output: "x"
Module CharStructure
Public Sub Main()
Dim chA As Char
chA = "A"c
Dim ch1 As Char
ch1 = "1"c
Dim str As String
str = "test string"
Console.WriteLine(chA.CompareTo("B"c)) ' Output: "-1" (meaning 'A' is 1 less than 'B')
Console.WriteLine(chA.Equals("A"c)) ' Output: "True"
Console.WriteLine(Char.GetNumericValue(ch1)) ' Output: "1"
Console.WriteLine(Char.IsControl(Chr(9))) ' Output: "True"
Console.WriteLine(Char.IsDigit(ch1)) ' Output: "True"
Console.WriteLine(Char.IsLetter(","c)) ' Output: "False"
Console.WriteLine(Char.IsLower("u"c)) ' Output: "True"
Console.WriteLine(Char.IsNumber(ch1)) ' Output: "True"
Console.WriteLine(Char.IsPunctuation("."c)) ' Output: "True"
Console.WriteLine(Char.IsSeparator(str, 4)) ' Output: "True"
Console.WriteLine(Char.IsSymbol("+"c)) ' Output: "True"
Console.WriteLine(Char.IsWhiteSpace(str, 4)) ' Output: "True"
Console.WriteLine(Char.Parse("S")) ' Output: "S"
Console.WriteLine(Char.ToLower("M"c)) ' Output: "m"
Console.WriteLine("x"c.ToString()) ' Output: "x"
End Sub
End Module
注釈
.NET では、 構造体を Char 使用して、UTF-16 エンコードを使用して Unicode コード ポイントを表します。 オブジェクトの Char 値は、その 16 ビット数値 (序数) 値です。
Unicode、スカラー値、コード ポイント、サロゲート ペア、UTF-16、および Rune 型に慣れていない場合は、「 .NET での文字エンコードの概要」を参照してください。
次のセクションでは、オブジェクトと文字の関係を Char 調べ、インスタンスで Char 実行される一般的なタスクについて説明します。 これらのタスクの一部を Rune 実行する代わりに Char 、.NET Core 3.0 で導入された 型を検討することをお勧めします。
Char オブジェクト、Unicode 文字、および文字列
Stringオブジェクトは、テキストの文字列を表す構造体のCharシーケンシャル コレクションです。 ほとんどの Unicode 文字は 1 つの Char オブジェクトで表すことができますが、基本文字、サロゲート ペア、および組み合わせ文字シーケンスとしてエンコードされる文字は、複数 Char のオブジェクトによって表されます。 このため、オブジェクト内のCharString構造体は、必ずしも 1 つの Unicode 文字と同等であるとは限りません。
次の場合、1 つの Unicode 文字を表すために、複数の 16 ビット コード単位が使用されます。
グリフ。1 つの文字または基本文字の後に 1 つ以上の結合文字が続く場合があります。 たとえば、文字 ä は、コード単位が U+0061 のオブジェクトの後Charに、コード単位が U+0308 であるオブジェクトでChar表されます。 (文字 ä は、コード単位が U+00E4 の 1 つの Char オブジェクトでも定義できます。次の例は、文字 ä が 2 つの Char オブジェクトで構成されていることを示しています。
using System; using System.IO; public class Example { public static void Main() { StreamWriter sw = new StreamWriter("chars1.txt"); char[] chars = { '\u0061', '\u0308' }; string strng = new String(chars); sw.WriteLine(strng); sw.Close(); } } // The example produces the following output: // ä
open System open System.IO let sw = new StreamWriter("chars1.txt") let chars = [| '\u0061'; '\u0308' |] let string = String chars sw.WriteLine string sw.Close() // The example produces the following output: // ä
Imports System.IO Module Example Public Sub Main() Dim sw As New StreamWriter("chars1.txt") Dim chars() As Char = { ChrW(&h0061), ChrW(&h0308) } Dim strng As New String(chars) sw.WriteLine(strng) sw.Close() End Sub End Module ' The example produces the following output: ' ä
Unicode 基本多言語プレーン (BMP) の外側の文字。 Unicode では、平面 0 を表す BMP に加えて 16 個の平面がサポートされています。 Unicode コード ポイントは、プレーンを含む 21 ビット値によって UTF-32 で表されます。 たとえば、U+1D160 は、MUSICAL SYMBOL 8 番目の NOTE 文字を表します。 UTF-16 エンコードには 16 ビットしかないため、BMP の外部の文字は UTF-16 のサロゲート ペアで表されます。 次の例は、U+1D160 に相当する UTF-32 (MUSICAL SYMBOL 8 番目の NOTE 文字) が U+D834 U+DD60 であることを示しています。 U+D834 は上位サロゲートです。上位サロゲートは、U+D800 から U+DBFF までの範囲です。 U+DD60 は低サロゲートです。低サロゲートの範囲は U+DC00 から U+DFFF です。
using System; using System.IO; public class Example { public static void Main() { StreamWriter sw = new StreamWriter(@".\chars2.txt"); int utf32 = 0x1D160; string surrogate = Char.ConvertFromUtf32(utf32); sw.WriteLine("U+{0:X6} UTF-32 = {1} ({2}) UTF-16", utf32, surrogate, ShowCodePoints(surrogate)); sw.Close(); } private static string ShowCodePoints(string value) { string retval = null; foreach (var ch in value) retval += String.Format("U+{0:X4} ", Convert.ToUInt16(ch)); return retval.Trim(); } } // The example produces the following output: // U+01D160 UTF-32 = ð (U+D834 U+DD60) UTF-16
open System open System.IO let showCodePoints (value: char seq) = let str = value |> Seq.map (fun ch -> $"U+{Convert.ToUInt16 ch:X4}") |> String.concat "" str.Trim() let sw = new StreamWriter(@".\chars2.txt") let utf32 = 0x1D160 let surrogate = Char.ConvertFromUtf32 utf32 sw.WriteLine $"U+{utf32:X6} UTF-32 = {surrogate} ({showCodePoints surrogate}) UTF-16" sw.Close() // The example produces the following output: // U+01D160 UTF-32 = ð (U+D834 U+DD60) UTF-16
Imports System.IO Module Example Public Sub Main() Dim sw As New StreamWriter(".\chars2.txt") Dim utf32 As Integer = &h1D160 Dim surrogate As String = Char.ConvertFromUtf32(utf32) sw.WriteLine("U+{0:X6} UTF-32 = {1} ({2}) UTF-16", utf32, surrogate, ShowCodePoints(surrogate)) sw.Close() End Sub Private Function ShowCodePoints(value As String) As String Dim retval As String = Nothing For Each ch In value retval += String.Format("U+{0:X4} ", Convert.ToUInt16(ch)) Next Return retval.Trim() End Function End Module ' The example produces the following output: ' U+01D160 UTF-32 = ð (U+D834 U+DD60) UTF-16
文字と文字カテゴリ
各 Unicode 文字または有効なサロゲート ペアは、Unicode カテゴリに属します。 .NET では、Unicode カテゴリは 列挙体のUnicodeCategoryメンバーによって表され、たとえば、 UnicodeCategory.LowercaseLetterUnicodeCategory.SpaceSeparatorなどのUnicodeCategory.CurrencySymbol値が含まれます。
文字の Unicode カテゴリを確認するには、 メソッドを呼び出します GetUnicodeCategory 。 たとえば、次の例では、 を GetUnicodeCategory 呼び出して、文字列内の各文字の Unicode カテゴリを表示します。 この例は、インスタンスにサロゲート ペアがない場合にのみ正しく機能します String 。
using System;
using System.Globalization;
class Example
{
public static void Main()
{
// Define a string with a variety of character categories.
String s = "The red car drove down the long, narrow, secluded road.";
// Determine the category of each character.
foreach (var ch in s)
Console.WriteLine("'{0}': {1}", ch, Char.GetUnicodeCategory(ch));
}
}
// The example displays the following output:
// 'T': UppercaseLetter
// 'h': LowercaseLetter
// 'e': LowercaseLetter
// ' ': SpaceSeparator
// 'r': LowercaseLetter
// 'e': LowercaseLetter
// 'd': LowercaseLetter
// ' ': SpaceSeparator
// 'c': LowercaseLetter
// 'a': LowercaseLetter
// 'r': LowercaseLetter
// ' ': SpaceSeparator
// 'd': LowercaseLetter
// 'r': LowercaseLetter
// 'o': LowercaseLetter
// 'v': LowercaseLetter
// 'e': LowercaseLetter
// ' ': SpaceSeparator
// 'd': LowercaseLetter
// 'o': LowercaseLetter
// 'w': LowercaseLetter
// 'n': LowercaseLetter
// ' ': SpaceSeparator
// 't': LowercaseLetter
// 'h': LowercaseLetter
// 'e': LowercaseLetter
// ' ': SpaceSeparator
// 'l': LowercaseLetter
// 'o': LowercaseLetter
// 'n': LowercaseLetter
// 'g': LowercaseLetter
// ',': OtherPunctuation
// ' ': SpaceSeparator
// 'n': LowercaseLetter
// 'a': LowercaseLetter
// 'r': LowercaseLetter
// 'r': LowercaseLetter
// 'o': LowercaseLetter
// 'w': LowercaseLetter
// ',': OtherPunctuation
// ' ': SpaceSeparator
// 's': LowercaseLetter
// 'e': LowercaseLetter
// 'c': LowercaseLetter
// 'l': LowercaseLetter
// 'u': LowercaseLetter
// 'd': LowercaseLetter
// 'e': LowercaseLetter
// 'd': LowercaseLetter
// ' ': SpaceSeparator
// 'r': LowercaseLetter
// 'o': LowercaseLetter
// 'a': LowercaseLetter
// 'd': LowercaseLetter
// '.': OtherPunctuation
open System
// Define a string with a variety of character categories.
let s = "The red car drove down the long, narrow, secluded road."
// Determine the category of each character.
for ch in s do
printfn $"'{ch}': {Char.GetUnicodeCategory ch}"
// The example displays the following output:
// 'T': UppercaseLetter
// 'h': LowercaseLetter
// 'e': LowercaseLetter
// ' ': SpaceSeparator
// 'r': LowercaseLetter
// 'e': LowercaseLetter
// 'd': LowercaseLetter
// ' ': SpaceSeparator
// 'c': LowercaseLetter
// 'a': LowercaseLetter
// 'r': LowercaseLetter
// ' ': SpaceSeparator
// 'd': LowercaseLetter
// 'r': LowercaseLetter
// 'o': LowercaseLetter
// 'v': LowercaseLetter
// 'e': LowercaseLetter
// ' ': SpaceSeparator
// 'd': LowercaseLetter
// 'o': LowercaseLetter
// 'w': LowercaseLetter
// 'n': LowercaseLetter
// ' ': SpaceSeparator
// 't': LowercaseLetter
// 'h': LowercaseLetter
// 'e': LowercaseLetter
// ' ': SpaceSeparator
// 'l': LowercaseLetter
// 'o': LowercaseLetter
// 'n': LowercaseLetter
// 'g': LowercaseLetter
// ',': OtherPunctuation
// ' ': SpaceSeparator
// 'n': LowercaseLetter
// 'a': LowercaseLetter
// 'r': LowercaseLetter
// 'r': LowercaseLetter
// 'o': LowercaseLetter
// 'w': LowercaseLetter
// ',': OtherPunctuation
// ' ': SpaceSeparator
// 's': LowercaseLetter
// 'e': LowercaseLetter
// 'c': LowercaseLetter
// 'l': LowercaseLetter
// 'u': LowercaseLetter
// 'd': LowercaseLetter
// 'e': LowercaseLetter
// 'd': LowercaseLetter
// ' ': SpaceSeparator
// 'r': LowercaseLetter
// 'o': LowercaseLetter
// 'a': LowercaseLetter
// 'd': LowercaseLetter
// '.': OtherPunctuation
Imports System.Globalization
Module Example
Public Sub Main()
' Define a string with a variety of character categories.
Dim s As String = "The car drove down the narrow, secluded road."
' Determine the category of each character.
For Each ch In s
Console.WriteLine("'{0}': {1}", ch, Char.GetUnicodeCategory(ch))
Next
End Sub
End Module
' The example displays the following output:
' 'T': UppercaseLetter
' 'h': LowercaseLetter
' 'e': LowercaseLetter
' ' ': SpaceSeparator
' 'r': LowercaseLetter
' 'e': LowercaseLetter
' 'd': LowercaseLetter
' ' ': SpaceSeparator
' 'c': LowercaseLetter
' 'a': LowercaseLetter
' 'r': LowercaseLetter
' ' ': SpaceSeparator
' 'd': LowercaseLetter
' 'r': LowercaseLetter
' 'o': LowercaseLetter
' 'v': LowercaseLetter
' 'e': LowercaseLetter
' ' ': SpaceSeparator
' 'd': LowercaseLetter
' 'o': LowercaseLetter
' 'w': LowercaseLetter
' 'n': LowercaseLetter
' ' ': SpaceSeparator
' 't': LowercaseLetter
' 'h': LowercaseLetter
' 'e': LowercaseLetter
' ' ': SpaceSeparator
' 'l': LowercaseLetter
' 'o': LowercaseLetter
' 'n': LowercaseLetter
' 'g': LowercaseLetter
' ',': OtherPunctuation
' ' ': SpaceSeparator
' 'n': LowercaseLetter
' 'a': LowercaseLetter
' 'r': LowercaseLetter
' 'r': LowercaseLetter
' 'o': LowercaseLetter
' 'w': LowercaseLetter
' ',': OtherPunctuation
' ' ': SpaceSeparator
' 's': LowercaseLetter
' 'e': LowercaseLetter
' 'c': LowercaseLetter
' 'l': LowercaseLetter
' 'u': LowercaseLetter
' 'd': LowercaseLetter
' 'e': LowercaseLetter
' 'd': LowercaseLetter
' ' ': SpaceSeparator
' 'r': LowercaseLetter
' 'o': LowercaseLetter
' 'a': LowercaseLetter
' 'd': LowercaseLetter
' '.': OtherPunctuation
内部的には、ASCII 範囲外の文字 (U+0000 から U+00FF) GetUnicodeCategory の場合、メソッドは クラスによって報告される CharUnicodeInfo Unicode カテゴリに依存します。 .NET Framework 4.6.2 以降では、Unicode 文字は Unicode 標準バージョン 8.0.0 に基づいて分類されます。 .NET Framework 4 から .NET Framework 4.6.1 までの.NET Frameworkのバージョンでは、Unicode Standard バージョン 6.3.0 に基づいて分類されます。
文字とテキスト要素
1 つの文字を複数 Char のオブジェクトで表すことができるため、個々 Char のオブジェクトを操作することは必ずしも意味があるとは限りません。 たとえば、次の例では、0 から 9 までのエーゲ海数字を表す Unicode コード ポイントを UTF-16 でエンコードされたコード 単位に変換します。 オブジェクトと文字が誤って同一 Char であるため、結果の文字列に 20 文字が含まれていると不正確に報告されます。
using System;
public class Example
{
public static void Main()
{
string result = String.Empty;
for (int ctr = 0x10107; ctr <= 0x10110; ctr++) // Range of Aegean numbers.
result += Char.ConvertFromUtf32(ctr);
Console.WriteLine("The string contains {0} characters.", result.Length);
}
}
// The example displays the following output:
// The string contains 20 characters.
open System
let result =
[ for i in 0x10107..0x10110 do // Range of Aegean numbers.
Char.ConvertFromUtf32 i ]
|> String.concat ""
printfn $"The string contains {result.Length} characters."
// The example displays the following output:
// The string contains 20 characters.
Module Example
Public Sub Main()
Dim result As String = String.Empty
For ctr As Integer = &h10107 To &h10110 ' Range of Aegean numbers.
result += Char.ConvertFromUtf32(ctr)
Next
Console.WriteLine("The string contains {0} characters.", result.Length)
End Sub
End Module
' The example displays the following output:
' The string contains 20 characters.
オブジェクトが 1 文字を表すという前提を Char 回避するには、次の操作を行います。
個々の文字を操作して言語コンテンツを String 表したり分析したりするのではなく、オブジェクト全体を操作できます。
次の例に示すように、 を使用 String.EnumerateRunes できます。
int CountLetters(string s) { int letterCount = 0; foreach (Rune rune in s.EnumerateRunes()) { if (Rune.IsLetter(rune)) { letterCount++; } } return letterCount; }
let countLetters (s: string) = let mutable letterCount = 0 for rune in s.EnumerateRunes() do if Rune.IsLetter rune then letterCount <- letterCount + 1 letterCount
クラスを使用して、個々CharのStringInfoオブジェクトではなくテキスト要素を操作できます。 次の例では、 オブジェクトを StringInfo 使用して、0 から 9 までのエーゲ海数字で構成される文字列内のテキスト要素の数をカウントします。 サロゲート ペアは 1 文字と見なされるため、文字列に 10 文字が含まれていることが正しく報告されます。
using System; using System.Globalization; public class Example { public static void Main() { string result = String.Empty; for (int ctr = 0x10107; ctr <= 0x10110; ctr++) // Range of Aegean numbers. result += Char.ConvertFromUtf32(ctr); StringInfo si = new StringInfo(result); Console.WriteLine("The string contains {0} characters.", si.LengthInTextElements); } } // The example displays the following output: // The string contains 10 characters.
open System open System.Globalization let result = [ for i in 0x10107..0x10110 do // Range of Aegean numbers. Char.ConvertFromUtf32 i ] |> String.concat "" let si = StringInfo result printfn $"The string contains {si.LengthInTextElements} characters." // The example displays the following output: // The string contains 10 characters.
Imports System.Globalization Module Example Public Sub Main() Dim result As String = String.Empty For ctr As Integer = &h10107 To &h10110 ' Range of Aegean numbers. result += Char.ConvertFromUtf32(ctr) Next Dim si As New StringInfo(result) Console.WriteLine("The string contains {0} characters.", si.LengthInTextElements) End Sub End Module ' The example displays the following output: ' The string contains 10 characters.
文字列に 1 つ以上の組み合わせ文字を含む基本文字が含まれている場合は、 メソッドを String.Normalize 呼び出して、部分文字列を 1 つの UTF-16 でエンコードされたコード単位に変換できます。 次の例では、 メソッドを String.Normalize 呼び出して、基本文字 U+0061 (LATIN SMALL LETTER A) と結合文字 U+0308 (連結 DIAERESIS) を U+00E4 (ラテン小文字 A WITH DIAERESIS) に変換します。
using System; public class Example { public static void Main() { string combining = "\u0061\u0308"; ShowString(combining); string normalized = combining.Normalize(); ShowString(normalized); } private static void ShowString(string s) { Console.Write("Length of string: {0} (", s.Length); for (int ctr = 0; ctr < s.Length; ctr++) { Console.Write("U+{0:X4}", Convert.ToUInt16(s[ctr])); if (ctr != s.Length - 1) Console.Write(" "); } Console.WriteLine(")\n"); } } // The example displays the following output: // Length of string: 2 (U+0061 U+0308) // // Length of string: 1 (U+00E4)
open System let showString (s: string) = printf $"Length of string: {s.Length} (" for i = 0 to s.Length - 1 do printf $"U+{Convert.ToUInt16 s[i]:X4}" if i <> s.Length - 1 then printf " " printfn ")\n" let combining = "\u0061\u0308" showString combining let normalized = combining.Normalize() showString normalized // The example displays the following output: // Length of string: 2 (U+0061 U+0308) // // Length of string: 1 (U+00E4)
Module Example Public Sub Main() Dim combining As String = ChrW(&h0061) + ChrW(&h0308) ShowString(combining) Dim normalized As String = combining.Normalize() ShowString(normalized) End Sub Private Sub ShowString(s As String) Console.Write("Length of string: {0} (", s.Length) For ctr As Integer = 0 To s.Length - 1 Console.Write("U+{0:X4}", Convert.ToUInt16(s(ctr))) If ctr <> s.Length - 1 Then Console.Write(" ") Next Console.WriteLine(")") Console.WriteLine() End Sub End Module ' The example displays the following output: ' Length of string: 2 (U+0061 U+0308) ' ' Length of string: 1 (U+00E4)
一般的な操作
構造体は Char 、オブジェクトを比較 Char し、現在 Char のオブジェクトの値を別の型のオブジェクトに変換し、オブジェクトの Unicode カテゴリを決定するメソッドを Char 提供します。
目的 | これらの System.Char メソッドを使用する |
---|---|
オブジェクトの比較Char | CompareTo および Equals |
コード ポイントを文字列に変換する | ConvertFromUtf32 型も Rune 参照してください。 |
Charオブジェクトまたはサロゲート オブジェクトのCharペアをコード ポイントに変換する | 1 文字の場合: Convert.ToInt32(Char) サロゲート ペアまたは文字列内の文字の場合: Char.ConvertToUtf32 型も Rune 参照してください。 |
文字の Unicode カテゴリを取得する | GetUnicodeCategory 参照 Rune.GetUnicodeCategory. |
数字、文字、句読点、制御文字など、文字が特定の Unicode カテゴリに含まれるかどうかを判断する | IsControl、IsDigit、IsHighSurrogate、IsLetter、、IsLetterOrDigit、IsLower、、IsLowSurrogate、、IsNumber、IsPunctuation、IsSeparator、IsUpperIsSurrogateIsSurrogatePairIsSymbol、IsWhiteSpace 型の対応するメソッド Rune も参照してください。 |
数値を Char 表すオブジェクトを数値型に変換する | GetNumericValue 参照 Rune.GetNumericValue. |
文字列内の文字を オブジェクトに変換するChar | Parse および TryParse |
オブジェクトを Char オブジェクトに String 変換する | ToString |
オブジェクトの大文字と小文字を変更するChar | ToLower、ToLowerInvariant、ToUpper、および ToUpperInvariant 型の対応するメソッド Rune も参照してください。 |
Char 値と相互運用機能
Unicode UTF-16 でエンコードされたコード単位として表されるマネージド Char 型がアンマネージ コードに渡されると、相互運用マーシャラーは既定で文字セットを ANSI に変換します。 属性を DllImportAttribute プラットフォーム呼び出し宣言に適用し、 属性を StructLayoutAttribute COM 相互運用宣言に適用して、マーシャリングされた Char 型で使用される文字セットを制御できます。
フィールド
MaxValue |
Char の最大有効値を表します。 このフィールドは定数です。 |
MinValue |
Char の最小有効値を表します。 このフィールドは定数です。 |
メソッド
CompareTo(Char) |
このインスタンスと指定した Char オブジェクトとを比較し、並べ替え順序において、このインスタンスの位置が指定した Char オブジェクトの前、後ろ、または同じのいずれであるかを示します。 |
CompareTo(Object) |
このインスタンスと指定したオブジェクトとを比較し、並べ替え順序において、このインスタンスの位置が指定した Object の前、後ろ、または同じのいずれであるかを示します。 |
ConvertFromUtf32(Int32) |
指定された Unicode コード ポイントを UTF-16 エンコードの文字列に変換します。 |
ConvertToUtf32(Char, Char) |
UTF-16 でエンコードされたサロゲート ペアの値を Unicode コード ポイントに変換します。 |
ConvertToUtf32(String, Int32) |
文字列中の指定位置にある UTF-16 エンコード文字またはサロゲート ペアの値を、Unicode コード ポイントに変換します。 |
Equals(Char) |
対象のインスタンスが、指定した Char オブジェクトに等しいかどうかを示す値を返します。 |
Equals(Object) |
このインスタンスが、指定されたオブジェクトと等価であるかどうかを示す値を返します。 |
GetHashCode() |
このインスタンスのハッシュ コードを返します。 |
GetNumericValue(Char) |
指定された Unicode の数字を倍精度浮動小数点数に変換します。 |
GetNumericValue(String, Int32) |
指定した文字列の指定位置にある Unicode の数字を倍精度浮動小数点数に変換します。 |
GetTypeCode() | |
GetUnicodeCategory(Char) |
指定された Unicode 文字を UnicodeCategory 値のいずれかで識別されるグループに分類します。 |
GetUnicodeCategory(String, Int32) |
指定した文字列の指定位置にある文字を UnicodeCategory 値のいずれかで識別されるグループに分類します。 |
IsAscii(Char) |
|
IsAsciiDigit(Char) |
文字が ASCII 数字として分類されているかどうかを示します。 |
IsAsciiHexDigit(Char) |
文字が ASCII 六次元数字として分類されているかどうかを示します。 |
IsAsciiHexDigitLower(Char) |
文字が ASCII 小文字の六次元数字として分類されているかどうかを示します。 |
IsAsciiHexDigitUpper(Char) |
文字が ASCII 大文字のヘキサデミックディジットとして分類されているかどうかを示します。 |
IsAsciiLetter(Char) |
文字が ASCII 文字として分類されているかどうかを示します。 |
IsAsciiLetterLower(Char) |
文字が小文字の ASCII 文字として分類されているかどうかを示します。 |
IsAsciiLetterOrDigit(Char) |
文字が ASCII 文字または数字として分類されているかどうかを示します。 |
IsAsciiLetterUpper(Char) |
文字が大文字の ASCII 文字として分類されているかどうかを示します。 |
IsBetween(Char, Char, Char) |
文字が指定された包括範囲内にあるかどうかを示します。 |
IsControl(Char) |
指定した Unicode 文字が、制御文字かどうかを示します。 |
IsControl(String, Int32) |
指定した文字列の指定位置にある文字が制御文字かどうかを示します。 |
IsDigit(Char) |
指定した Unicode 文字が、10 進数の数字かどうかを示します。 |
IsDigit(String, Int32) |
指定した文字列の指定位置にある文字が 10 進数の数字かどうかを示します。 |
IsHighSurrogate(Char) |
指定された Char オブジェクトが上位サロゲートであるかどうかを示します。 |
IsHighSurrogate(String, Int32) |
文字列中の指定された位置にある Char オブジェクトが、上位サロゲートであるかどうかを示します。 |
IsLetter(Char) |
指定した Unicode 文字が Unicode 文字かどうかを示します。 |
IsLetter(String, Int32) |
指定した文字列の指定位置にある文字が、Unicode 文字かどうかを示します。 |
IsLetterOrDigit(Char) |
指定した Unicode 文字が文字または 10 進数の数字なのかどうかを示します。 |
IsLetterOrDigit(String, Int32) |
指定した文字列の指定位置にある文字が文字または 10 進数の数字かどうかを示します。 |
IsLower(Char) |
指定した Unicode 文字が小文字かどうかを示します。 |
IsLower(String, Int32) |
指定した文字列の指定位置にある文字が、小文字かどうかを示します。 |
IsLowSurrogate(Char) |
指定された Char オブジェクトが下位サロゲートであるかどうかを示します。 |
IsLowSurrogate(String, Int32) |
文字列のうち、指定された位置にある Char オブジェクトが、下位サロゲートであるかどうかを示します。 |
IsNumber(Char) |
指定された Unicode 文字が数字かどうかを示します。 |
IsNumber(String, Int32) |
指定した文字列の指定位置にある文字が数字かどうかを示します。 |
IsPunctuation(Char) |
指定した Unicode 文字が区切り記号かどうかを示します。 |
IsPunctuation(String, Int32) |
指定した文字列の指定位置にある文字が区切り記号かどうかを示します。 |
IsSeparator(Char) |
指定した Unicode 文字が区切り文字かどうかを示します。 |
IsSeparator(String, Int32) |
指定した文字列の指定位置にある文字が区切り文字かどうかを示します。 |
IsSurrogate(Char) |
指定した文字がサロゲート コード単位を持つかどうかを示します。 |
IsSurrogate(String, Int32) |
指定した文字列の指定位置にある文字がサロゲート コード単位を持つかどうかを示します。 |
IsSurrogatePair(Char, Char) |
指定された 2 つの Char オブジェクトがサロゲート ペアを形成するかどうかを示します。 |
IsSurrogatePair(String, Int32) |
文字列中の指定された位置で互いに隣接する 2 つの Char オブジェクトがサロゲート ペアを形成するかどうかを示します。 |
IsSymbol(Char) |
指定した Unicode 文字が記号かどうかを示します。 |
IsSymbol(String, Int32) |
指定した文字列の指定位置にある文字が記号かどうかを示します。 |
IsUpper(Char) |
指定した Unicode 文字が大文字かどうかを示します。 |
IsUpper(String, Int32) |
指定した文字列の指定位置にある文字が大文字かどうかを示します。 |
IsWhiteSpace(Char) |
指定した Unicode 文字が空白かどうかを示します。 |
IsWhiteSpace(String, Int32) |
指定した文字列の指定位置にある文字が空白かどうかを示します。 |
Parse(String) |
指定した文字列の値をそれと等価な Unicode 文字に変換します。 |
ToLower(Char) |
Unicode 文字の値をそれと等価な小文字に変換します。 |
ToLower(Char, CultureInfo) |
指定したカルチャ固有の書式情報を使用して、指定した Unicode 文字の値をそれと等価な小文字へ変換します。 |
ToLowerInvariant(Char) |
インバリアント カルチャの大文字と小文字の規則を使用して、Unicode 文字の値を対応する小文字表現に変換します。 |
ToString() |
このインスタンスの値を、それと等価の文字列形式に変換します。 |
ToString(Char) |
指定した Unicode 文字をそれと等価な文字列形式に変換します。 |
ToString(IFormatProvider) |
指定したカルチャ固有の書式情報を使用して、このインスタンスの値をそれと等価な文字列形式に変換します。 |
ToUpper(Char) |
Unicode 文字の値をそれと等価な大文字に変換します。 |
ToUpper(Char, CultureInfo) |
指定したカルチャ固有の書式情報を使用して、指定した Unicode 文字の値をそれと等価な大文字へ変換します。 |
ToUpperInvariant(Char) |
インバリアント カルチャの大文字と小文字の規則を使用して、Unicode 文字の値を対応する大文字表現に変換します。 |
TryParse(String, Char) |
指定した文字列の値をそれと等価な Unicode 文字に変換します。 リターン コードは、変換が成功したか失敗したかを示します。 |
明示的なインターフェイスの実装
適用対象
スレッド セーフ
この型のすべてのメンバーはスレッド セーフです。 インスタンスの状態を変更するように見えるメンバーは、実際には新しい値で初期化された新しいインスタンスを返します。 他の型と同様に、この型のインスタンスを含む共有変数の読み取りと書き込みは、スレッドセーフを保証するためにロックによって保護する必要があります。
こちらもご覧ください
フィードバック
フィードバックの送信と表示