Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/34: Рейтинг темы: голосов - 34, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 15.04.2019
Сообщений: 16

Игнорирование регистра букв при поиске

24.04.2019, 23:19. Показов 7211. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
нужно сделать, чтобы при вводе ИМЕНИ(firstname) сотрудника при втором запросе было игнорирование регистра букв. Чтобы, например, при вводе имени Анна и анна и АнНа и т.п. выдавало всегда информацию из xml об Анне, а не ошибку. Код программы и xml прилагается
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Xml; 
 
namespace Lab 
{ 
class Program 
{ 
//файл с xml данными 
private static string file = "./../../data.xml"; 
 
static void Main(string[] args) 
{ 
XmlDocument xDoc = new XmlDocument(); 
xDoc.Load(file); 
XmlElement xRoot = xDoc.DocumentElement; 
// выбор всех дочерних узлов 
XmlNodeList childnodes = xRoot.SelectNodes("*"); 
// outData(childnodes); //вывести полученные данные 
while (true) 
{ 
Console.WriteLine("*********************************************"); 
Console.WriteLine("Выберите действие:" + 
"\n0 - выход;\n1 - Вывести сотрудников указанной компании и должности;"+ 
"\n2 - Вывести сотрудников с указанным именем;" + 
"\n3 - Вывести всех сотрудников"); 
try 
{ 
int action = Int32.Parse(Console.ReadLine()); 
switch (action) 
{ 
case 0: return; 
case 1: EmployeerWithCompanyAndPosition(xRoot); break; 
case 2: EmployeerWithName(xRoot); break; 
case 3: outData(childnodes); break; 
default: 
Console.WriteLine("Некорректное значение!"); 
break; 
} 
} 
catch 
{ 
Console.WriteLine("Некорректное значение!"); 
continue; 
} 
} 
} 
 
 
static void EmployeerWithCompanyAndPosition(XmlElement xRoot) 
{ 
Console.WriteLine("\n1. Вывести сотрудников указанной компании и должности;"); 
string enteredComp = ""; 
Console.Write("Введите компанию: "); 
enteredComp = Console.ReadLine(); 
string enteredPosit = ""; 
Console.Write("Введите должность: "); 
enteredPosit = Console.ReadLine(); 
XmlNodeList CompDolzh = xRoot.SelectNodes("user[company='" + enteredComp + "'][position='" + enteredPosit + "']"); 
if (CompDolzh.Count == 0) 
{ 
Console.WriteLine("Не нашлось совпадений."); 
} 
else 
{ 
outData(CompDolzh); 
} 
} 
 
 
static void EmployeerWithName(XmlElement Root) 
{ 
Console.WriteLine("\n2. Вывести сотрудников с указанным именем"); 
 
string enteredName = ""; 
Console.Write("Введите имя: "); 
enteredName = Console.ReadLine(); 
 
/* string name = ""; 
foreach (XmlNode w in Root) 
{ 
name = (w.SelectSingleNode(@"firstname").InnerText); 
} 
name = Console.ReadLine().ToLower();*/ 
 
 
//выбрать все записи с firstname равным введеному значению
XmlNodeList nodes2 = Root.SelectNodes("user[@firstname='" + enteredName + "']"); 
if (nodes2.Count == 0) 
{ 
Console.WriteLine("Не нашлось совпадений."); 
} 
else 
{ 
outData(nodes2); 
} 
} 
 
 
 
//метод для вывода полученной информации из xml 
static void outData(XmlNodeList Root) 
{ 
foreach (XmlNode xnode in Root) 
{ 
// получаем атрибуты lastname firstname 
if (xnode.Attributes.Count > 0) 
{ 
XmlNode attr_lname = xnode.Attributes.GetNamedItem("lastname"); 
XmlNode attr_fname = xnode.Attributes.GetNamedItem("firstname"); 
if (attr_fname != null && attr_lname != null) 
Console.WriteLine(attr_lname.Value +" "+attr_fname.Value); 
} 
foreach (XmlNode childnode in xnode.ChildNodes) 
{ 
switch (childnode.Name) 
{ 
case "company": 
Console.WriteLine("Компания: {0}", childnode.InnerText); 
break; 
case "age": 
Console.WriteLine("Возраст: {0}", childnode.InnerText); 
break; 
case "male": 
Console.WriteLine("Пол: {0}", childnode.InnerText); 
break; 
case "position": 
Console.WriteLine("Должность: {0}", childnode.InnerText); 
break; 
} 
} 
Console.WriteLine(); 
} 
} 
} 
}
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?xml version="1.0"?> 
<ArrayOfuser xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<user lastname = "Шустова" firstname="Наталья"> 
<company></company> 
<male>женский</male> 
<age>21</age> 
<position>программист</position> 
</user> 
<user lastname = "Турахонов" firstname="Саидбоситхон"> 
<company>компания программистов</company> 
<male>муж</male> 
<age>24</age> 
<position>программист</position> 
</user> 
<user lastname = "Шубина" firstname="Мария"> 
<company></company> 
<male>жен</male> 
<age>21</age> 
<position>программист</position> 
</user> 
<user lastname = "Петров" firstname="Петр"> 
<company>магнит</company> 
<male>муж</male> 
<age>25</age> 
<position>продавец</position> 
</user> 
<user lastname = "Сергеева" firstname= "Анна"> 
<company>магнит</company> 
<male>жен</male> 
<age>19</age> 
<position>менеджер</position> 
</user> 
<user lastname = "Петухов" firstname="Кирилл"> 
<company>пятерочка</company> 
<male>муж</male> 
<age>27</age> 
<position>уборщик</position> 
</user> 
<user lastname = "Кокроина" firstname= "Елена"> 
<company>пятерочка</company> 
<male>жен</male> 
<age>21</age> 
<position>продавец</position> 
</user> 
<user lastname = "Беляков" firstname= "Артем"> 
<company>fix price</company> 
<male>муж</male> 
<age>32</age> 
<position>охранник</position> 
</user> 
<user lastname = "Кокроина" firstname= "Анна"> 
<company>fix price</company> 
<male>жен</male> 
<age>30</age> 
<position>директор</position> 
</user> 
</ArrayOfuser>
Миниатюры
Игнорирование регистра букв при поиске  
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.04.2019, 23:19
Ответы с готовыми решениями:

Игнорирование регистра при обращении к ключу Dictionary
Добрый день! У меня есть словарь: Dictionary&lt;string, List&lt;int&gt;&gt; TableSources = new Dictionary&lt;string,...

Дана строка S. Найти количество различных букв в ней. Программа должна работать без учёта регистра букв
Задачи на обработку строк . Условие вида &quot;дана строка&quot; означает, что пользователем вводится строка с клавиатуры. Осуществить ввод...

Изменение регистра букв.
Подскажите плиз код перевода букв вверхний регистр и наоборот!!! В C#)) Используя RadioButton, одну на верхний регистр, а другую на...

3
Фрилансер
805 / 312 / 148
Регистрация: 13.02.2019
Сообщений: 1,071
24.04.2019, 23:37
Selenata, приводите обе части к одному виду с помощью, например, ToLower(). Тогда "Анна".ToLower() будет равно "АнНа".ToLower() а также и "анна".ToLower()
1
0 / 0 / 0
Регистрация: 15.04.2019
Сообщений: 16
24.04.2019, 23:51  [ТС]
asn31337, да, я знаю, что с помощью ToLower(); нужно из xml вытащить имя и его привести к ToLower. Так же нужно сделать и с именем, которое вводится с клавиатуры. И сравнить их. Так понимаю? Проблема в том, что я уже голову сломала как это сделать. Помогите именно этот кусок когда реализовать, пожалуйста)
0
Фрилансер
805 / 312 / 148
Регистрация: 13.02.2019
Сообщений: 1,071
25.04.2019, 00:08
Лучший ответ Сообщение было отмечено Selenata как решение

Решение

Selenata, попробуйте вот так:
C#
1
XmlNodeList nodes2 = xRoot.SelectNodes($"user[translate(@firstname,'А-Я','а-я') ='{enteredName.ToLower()}']");
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.04.2019, 00:08
Помогаю со студенческими работами здесь

Смена регистра букв
Здравствуйте. Каким образом можно превращать буквы верхнего регистра в нижний, и наоборот (при этом, программа игнорирует цыфры). То есть,...

Изменение регистра введенных букв
Добрый день. Есть задание: Числовые значения символов нижнего регистра в коде ASCII отличаются от значении символов верхнего регистра...

Изменение регистра букв в тексте
1. Есть некий русский текст (либо все строчные либо все заглавные буквы) 2. Есть база данных с таблицей со словами (в именительном...

Сравнение строк без учета регистра букв
Здравствуйте. Имею код public static bool Search(ref ComplexElm elm, string value) { ... ...

Найти количество различных букв в строке без учета регистра
дана строка S. Найти кол-во различных букв в ней. программа должна работать без учёта регистра букв.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru