Net framework 5, а также среды Visual Studio 2012 и C#


работа с символами и текстовыми элементами в строке



Download 6,27 Mb.
Pdf ko'rish
bet269/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   265   266   267   268   269   270   271   272   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C

работа с символами и текстовыми элементами в строке
Сравнение строк полезно при сортировке и поиске одинаковых строк, однако иногда 
требуется проверять отдельные символы в пределах строки. С подобными задачами 
призваны справляться несколько методов и свойств типа 
String
, в числе которых 
Length

Chars
(индексатор в C#), 
GetEnumerator

ToCharArray

Contains

IndexOf

LastIndexOf

IndexOfAny
и 
LastIndexOfAny
.
На самом деле 
System.Char
представляет одно 16-разрядное кодовое значение 
в кодировке Юникод, которое необязательно соответствует абстрактному Юникод-
символу. Так, некоторые абстрактные Unicode-символы являются комбинацией 
двух кодовых значений. Например, сочетание символов U+0625 (арабская буква 


373
Тип.System String
«алеф» с подстрочной «хамза») и U+0650 (арабская «казра») образует один араб-
ский символ, или 
текстовый элемент
.
Кроме того, представление некоторых текстовых элементов требует не одного, 
а двух 16-разрядных кодовых значений. Первое называют 
старшим
(high surrogate), 
а второе — 
младшим заменителем
(low surrogate). Значения старшего находятся 
в диапазоне от U+D800 до U+DBFF, младшего — от U+DC00 до U+DFFF. Такой 
способ кодировки позволяет представить в Unicode более миллиона различных 
символов.
Символы-заменители востребованы в основном в странах Восточной Азии и го-
раздо меньше в США и Европе. Для корректной работы с текстовыми элементами 
предназначен тип 
System.Globalization.StringInfo
. Самый простой способ 
воспользоваться этим типом — создать его экземпляр, передав его конструктору 
строку. Чтобы затем узнать, сколько текстовых элементов содержит строка, до-
статочно прочитать свойство 
LengthInTextElements
объекта 
StringInfo
. Позже 
можно вызвать метод 
SubstringByTextElements
объекта 
StringInfo
, чтобы извлечь 
один или несколько последовательных текстовых элементов.
Кроме того, в классе 
StringInfo
есть статический метод 
GetTextElementEnumerator

возвращающий объект 
System.Globalization.TextElementEnumerator
, который, 
в свою очередь, позволяет просмотреть в строке все абстрактные символы Юникода. 
Наконец, можно воспользоваться статическим методом 
ParseCombiningCharacters
типа 
StringInfo
, чтобы получить массив значений типа 
Int32
, по длине которого 
можно судить о количестве текстовых элементов в строке. Каждый элемент мас-
сива содержит индекс первого кодового значения соответствующего текстового 
элемента.
Очередной пример демонстрирует различные способы использования класса 
StringInfo
для управления текстовыми элементами строки:
using System;
using System.Text;
using System.Globalization;
using System.Windows.Forms;
public sealed class Program {
public static void Main() {
// Следующая строка содержит комбинированные символы
String s = "a\u0304\u0308bc\u0327";
SubstringByTextElements(s);
EnumTextElements(s);
EnumTextElementIndexes(s);
}
private static void SubstringByTextElements(String s) {
String output = String.Empty;
StringInfo si = new StringInfo(s);
for (Int32 element = 0; element < si.LengthInTextElements; element++) {
output += String.Format(
продолжение



374
Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   265   266   267   268   269   270   271   272   ...   658




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish