Char.IsSurrogatePair 方法
定義
多載
IsSurrogatePair(String, Int32) |
表示字串中指定位置處的兩個相鄰 Char 物件是否組成 Surrogate 字組。Indicates whether two adjacent Char objects at a specified position in a string form a surrogate pair. |
IsSurrogatePair(Char, Char) |
表示兩個指定的 Char 物件是否組成 Surrogate 字組。Indicates whether the two specified Char objects form a surrogate pair. |
範例
下列程式碼範例示範 IsHighSurrogate 、 IsLowSurrogate 和 IsSurrogatePair 方法。The following code example demonstrates the IsHighSurrogate, IsLowSurrogate, and IsSurrogatePair methods.
// This example demonstrates the Char.IsLowSurrogate() method
// IsHighSurrogate() method
// IsSurrogatePair() method
using namespace System;
int main()
{
Char cHigh = L'\xD800';
Char cLow = L'\xDC00';
array<Char>^temp0 = {L'a',L'\xD800',L'\xDC00',L'z'};
String^ s1 = gcnew String( temp0 );
String^ divider = String::Concat( Environment::NewLine, gcnew String( '-',70 ), Environment::NewLine );
Console::WriteLine();
Console::WriteLine( "Hexadecimal code point of the character, cHigh: {0:X4}", (int)cHigh );
Console::WriteLine( "Hexadecimal code point of the character, cLow: {0:X4}", (int)cLow );
Console::WriteLine();
Console::WriteLine( "Characters in string, s1: 'a', high surrogate, low surrogate, 'z'" );
Console::WriteLine( "Hexadecimal code points of the characters in string, s1: " );
for ( int i = 0; i < s1->Length; i++ )
{
Console::WriteLine( "s1[{0}] = {1:X4} ", i, (int)s1[ i ] );
}
Console::WriteLine( divider );
Console::WriteLine( "Is each of the following characters a high surrogate?" );
Console::WriteLine( "A1) cLow? - {0}", Char::IsHighSurrogate( cLow ) );
Console::WriteLine( "A2) cHigh? - {0}", Char::IsHighSurrogate( cHigh ) );
Console::WriteLine( "A3) s1[0]? - {0}", Char::IsHighSurrogate( s1, 0 ) );
Console::WriteLine( "A4) s1[1]? - {0}", Char::IsHighSurrogate( s1, 1 ) );
Console::WriteLine( divider );
Console::WriteLine( "Is each of the following characters a low surrogate?" );
Console::WriteLine( "B1) cLow? - {0}", Char::IsLowSurrogate( cLow ) );
Console::WriteLine( "B2) cHigh? - {0}", Char::IsLowSurrogate( cHigh ) );
Console::WriteLine( "B3) s1[0]? - {0}", Char::IsLowSurrogate( s1, 0 ) );
Console::WriteLine( "B4) s1[2]? - {0}", Char::IsLowSurrogate( s1, 2 ) );
Console::WriteLine( divider );
Console::WriteLine( "Is each of the following pairs of characters a surrogate pair?" );
Console::WriteLine( "C1) cHigh and cLow? - {0}", Char::IsSurrogatePair( cHigh, cLow ) );
Console::WriteLine( "C2) s1[0] and s1[1]? - {0}", Char::IsSurrogatePair( s1, 0 ) );
Console::WriteLine( "C3) s1[1] and s1[2]? - {0}", Char::IsSurrogatePair( s1, 1 ) );
Console::WriteLine( "C4) s1[2] and s1[3]? - {0}", Char::IsSurrogatePair( s1, 2 ) );
Console::WriteLine( divider );
}
/*
This example produces the following results:
Hexadecimal code point of the character, cHigh: D800
Hexadecimal code point of the character, cLow: DC00
Characters in string, s1: 'a', high surrogate, low surrogate, 'z'
Hexadecimal code points of the characters in string, s1:
s1[0] = 0061
s1[1] = D800
s1[2] = DC00
s1[3] = 007A
----------------------------------------------------------------------
Is each of the following characters a high surrogate?
A1) cLow? - False
A2) cHigh? - True
A3) s1[0]? - False
A4) s1[1]? - True
----------------------------------------------------------------------
Is each of the following characters a low surrogate?
B1) cLow? - True
B2) cHigh? - False
B3) s1[0]? - False
B4) s1[2]? - True
----------------------------------------------------------------------
Is each of the following pairs of characters a surrogate pair?
C1) cHigh and cLow? - True
C2) s1[0] and s1[1]? - False
C3) s1[1] and s1[2]? - True
C4) s1[2] and s1[3]? - False
----------------------------------------------------------------------
*/
// This example demonstrates the Char.IsLowSurrogate() method
// IsHighSurrogate() method
// IsSurrogatePair() method
using System;
class Sample
{
public static void Main()
{
char cHigh = '\uD800';
char cLow = '\uDC00';
string s1 = new String(new char[] {'a', '\uD800', '\uDC00', 'z'});
string divider = String.Concat( Environment.NewLine, new String('-', 70),
Environment.NewLine);
Console.WriteLine();
Console.WriteLine("Hexadecimal code point of the character, cHigh: {0:X4}", (int)cHigh);
Console.WriteLine("Hexadecimal code point of the character, cLow: {0:X4}", (int)cLow);
Console.WriteLine();
Console.WriteLine("Characters in string, s1: 'a', high surrogate, low surrogate, 'z'");
Console.WriteLine("Hexadecimal code points of the characters in string, s1: ");
for(int i = 0; i < s1.Length; i++)
{
Console.WriteLine("s1[{0}] = {1:X4} ", i, (int)s1[i]);
}
Console.WriteLine(divider);
Console.WriteLine("Is each of the following characters a high surrogate?");
Console.WriteLine("A1) cLow? - {0}", Char.IsHighSurrogate(cLow));
Console.WriteLine("A2) cHigh? - {0}", Char.IsHighSurrogate(cHigh));
Console.WriteLine("A3) s1[0]? - {0}", Char.IsHighSurrogate(s1, 0));
Console.WriteLine("A4) s1[1]? - {0}", Char.IsHighSurrogate(s1, 1));
Console.WriteLine(divider);
Console.WriteLine("Is each of the following characters a low surrogate?");
Console.WriteLine("B1) cLow? - {0}", Char.IsLowSurrogate(cLow));
Console.WriteLine("B2) cHigh? - {0}", Char.IsLowSurrogate(cHigh));
Console.WriteLine("B3) s1[0]? - {0}", Char.IsLowSurrogate(s1, 0));
Console.WriteLine("B4) s1[2]? - {0}", Char.IsLowSurrogate(s1, 2));
Console.WriteLine(divider);
Console.WriteLine("Is each of the following pairs of characters a surrogate pair?");
Console.WriteLine("C1) cHigh and cLow? - {0}", Char.IsSurrogatePair(cHigh, cLow));
Console.WriteLine("C2) s1[0] and s1[1]? - {0}", Char.IsSurrogatePair(s1, 0));
Console.WriteLine("C3) s1[1] and s1[2]? - {0}", Char.IsSurrogatePair(s1, 1));
Console.WriteLine("C4) s1[2] and s1[3]? - {0}", Char.IsSurrogatePair(s1, 2));
Console.WriteLine(divider);
}
}
/*
This example produces the following results:
Hexadecimal code point of the character, cHigh: D800
Hexadecimal code point of the character, cLow: DC00
Characters in string, s1: 'a', high surrogate, low surrogate, 'z'
Hexadecimal code points of the characters in string, s1:
s1[0] = 0061
s1[1] = D800
s1[2] = DC00
s1[3] = 007A
----------------------------------------------------------------------
Is each of the following characters a high surrogate?
A1) cLow? - False
A2) cHigh? - True
A3) s1[0]? - False
A4) s1[1]? - True
----------------------------------------------------------------------
Is each of the following characters a low surrogate?
B1) cLow? - True
B2) cHigh? - False
B3) s1[0]? - False
B4) s1[2]? - True
----------------------------------------------------------------------
Is each of the following pairs of characters a surrogate pair?
C1) cHigh and cLow? - True
C2) s1[0] and s1[1]? - False
C3) s1[1] and s1[2]? - True
C4) s1[2] and s1[3]? - False
----------------------------------------------------------------------
*/
' This example demonstrates the Char.IsLowSurrogate() method
' IsHighSurrogate() method
' IsSurrogatePair() method
Class Sample
Public Shared Sub Main()
Dim cHigh As Char = ChrW(&HD800)
Dim cLow As Char = ChrW(&HDC00)
Dim s1 = New [String](New Char() {"a"c, ChrW(&HD800), ChrW(&HDC00), "z"c})
Dim divider As String = [String].Concat(Environment.NewLine, _
New [String]("-"c, 70), _
Environment.NewLine)
Console.WriteLine()
Console.WriteLine("Hexadecimal code point of the character, cHigh: {0:X4}", AscW(cHigh))
Console.WriteLine("Hexadecimal code point of the character, cLow: {0:X4}", AscW(cLow))
Console.WriteLine()
Console.WriteLine("Characters in string, s1: 'a', high surrogate, low surrogate, 'z'")
Console.WriteLine("Hexadecimal code points of the characters in string, s1: ")
Dim i As Integer
For i = 0 To s1.Length - 1
Console.WriteLine("s1({0}) = {1:X4} ", i, AscW(s1.Chars(i)))
Next i
Console.WriteLine(divider)
Console.WriteLine("Is each of the following characters a high surrogate?")
Console.WriteLine("A1) cLow? - {0}", [Char].IsHighSurrogate(cLow))
Console.WriteLine("A2) cHigh? - {0}", [Char].IsHighSurrogate(cHigh))
Console.WriteLine("A3) s1(0)? - {0}", [Char].IsHighSurrogate(s1, 0))
Console.WriteLine("A4) s1(1)? - {0}", [Char].IsHighSurrogate(s1, 1))
Console.WriteLine(divider)
Console.WriteLine("Is each of the following characters a low surrogate?")
Console.WriteLine("B1) cLow? - {0}", [Char].IsLowSurrogate(cLow))
Console.WriteLine("B2) cHigh? - {0}", [Char].IsLowSurrogate(cHigh))
Console.WriteLine("B3) s1(0)? - {0}", [Char].IsLowSurrogate(s1, 0))
Console.WriteLine("B4) s1(2)? - {0}", [Char].IsLowSurrogate(s1, 2))
Console.WriteLine(divider)
Console.WriteLine("Is each of the following pairs of characters a surrogate pair?")
Console.WriteLine("C1) cHigh and cLow? - {0}", [Char].IsSurrogatePair(cHigh, cLow))
Console.WriteLine("C2) s1(0) and s1(1)? - {0}", [Char].IsSurrogatePair(s1, 0))
Console.WriteLine("C3) s1(1) and s1(2)? - {0}", [Char].IsSurrogatePair(s1, 1))
Console.WriteLine("C4) s1(2) and s1(3)? - {0}", [Char].IsSurrogatePair(s1, 2))
Console.WriteLine(divider)
End Sub
End Class
'
'This example produces the following results:
'
'Hexadecimal code point of the character, cHigh: D800
'Hexadecimal code point of the character, cLow: DC00
'
'Characters in string, s1: 'a', high surrogate, low surrogate, 'z'
'Hexadecimal code points of the characters in string, s1:
's1(0) = 0061
's1(1) = D800
's1(2) = DC00
's1(3) = 007A
'
'----------------------------------------------------------------------
'
'Is each of the following characters a high surrogate?
'A1) cLow? - False
'A2) cHigh? - True
'A3) s1(0)? - False
'A4) s1(1)? - True
'
'----------------------------------------------------------------------
'
'Is each of the following characters a low surrogate?
'B1) cLow? - True
'B2) cHigh? - False
'B3) s1(0)? - False
'B4) s1(2)? - True
'
'----------------------------------------------------------------------
'
'Is each of the following pairs of characters a surrogate pair?
'C1) cHigh and cLow? - True
'C2) s1(0) and s1(1)? - False
'C3) s1(1) and s1(2)? - True
'C4) s1(2) and s1(3)? - False
'
'----------------------------------------------------------------------
'
IsSurrogatePair(String, Int32)
public:
static bool IsSurrogatePair(System::String ^ s, int index);
public static bool IsSurrogatePair (string s, int index);
static member IsSurrogatePair : string * int -> bool
Public Shared Function IsSurrogatePair (s As String, index As Integer) As Boolean
參數
- s
- String
字串。A string.
- index
- Int32
s
中要評估之字元字組的開始位置。The starting position of the pair of characters to evaluate within s
.
傳回
當 true
參數位於 s
和 index
+1 時包含相鄰的字元,而且位於 index
之字元的數值範圍是從 U+D800 到 U+DBFF,同時位於 index
+1 之字元的數值範圍是從 U+DC00 到 U+DFFF 時為 index
,否則為 false
。true
if the s
parameter includes adjacent characters at positions index
and index
+ 1, and the numeric value of the character at position index
ranges from U+D800 through U+DBFF, and the numeric value of the character at position index
+1 ranges from U+DC00 through U+DFFF; otherwise, false
.
例外狀況
s
為 null
。s
is null
.
index
不是 s
內的位置。index
is not a position within s
.
備註
一般情況下,單一字元會以單一16位 Unicode 程式碼單位表示。Ordinarily, a single character is represented by a single 16-bit Unicode code unit. UTF-16 編碼也支援代理配對,可讓單一抽象字元以 2 16 位程式碼單位表示。UTF-16 encoding also supports surrogate pairs, which allow a single abstract character to be represented by two 16-bit code units. 第一個程式碼單位,其值的範圍可以從 U + D800 到 U + DBFF,是高代理。The first code unit, whose value can range from U+D800 to U+DBFF, is the high surrogate. 第二個程式碼單位,其值的範圍可以從 U + DC00 到 U + DFFF,是低代理。The second code unit, whose value can range from U+DC00 to U+DFFF, is the low surrogate. 個別代理程式碼點沒有自己的解讀。Individual surrogate code points have no interpretation of their own. 如需有關代理程式和 Unicode 標準的詳細資訊,請參閱 Unicode首頁。For more information about surrogates and the Unicode Standard, see the Unicode home page.
另請參閱
適用於
IsSurrogatePair(Char, Char)
public:
static bool IsSurrogatePair(char highSurrogate, char lowSurrogate);
public static bool IsSurrogatePair (char highSurrogate, char lowSurrogate);
static member IsSurrogatePair : char * char -> bool
Public Shared Function IsSurrogatePair (highSurrogate As Char, lowSurrogate As Char) As Boolean
參數
- highSurrogate
- Char
要評估為 Surrogate 字組之高 Surrogate 的字元。The character to evaluate as the high surrogate of a surrogate pair.
- lowSurrogate
- Char
要評估為 Surrogate 字組之低 Surrogate 的字元。The character to evaluate as the low surrogate of a surrogate pair.
傳回
當 true
參數的數值範圍是從 U+D800 到 U+DBFF,且 highSurrogate
參數的數值範圍是從 U+DC00 到 U+DFFF 時為 lowSurrogate
,否則為 false
。true
if the numeric value of the highSurrogate
parameter ranges from U+D800 through U+DBFF, and the numeric value of the lowSurrogate
parameter ranges from U+DC00 through U+DFFF; otherwise, false
.
備註
一般情況下,單一字元會以單一16位 Unicode 程式碼單位表示。Ordinarily, a single character is represented by a single 16-bit Unicode code unit. UTF-16 編碼也支援代理配對,可讓單一抽象字元以 2 16 位程式碼單位表示。UTF-16 encoding also supports surrogate pairs, which allow a single abstract character to be represented by two 16-bit code units. 第一個程式碼單位,其值的範圍可以從 U + D800 到 U + DBFF,是高代理。The first code unit, whose value can range from U+D800 to U+DBFF, is the high surrogate. 第二個程式碼單位,其值的範圍可以從 U + DC00 到 U + DFFF,是低代理。The second code unit, whose value can range from U+DC00 to U+DFFF, is the low surrogate. 個別代理程式碼點沒有自己的解讀。Individual surrogate code points have no interpretation of their own. 如需有關代理程式和 Unicode 標準的詳細資訊,請參閱 Unicode首頁。For more information about surrogates and the Unicode Standard, see the Unicode home page.