Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.65/187: Рейтинг темы: голосов - 187, средняя оценка - 4.65
12 / 12 / 3
Регистрация: 09.05.2010
Сообщений: 384

Как сравнить string и char[] по содержимому?

20.04.2011, 16:30. Показов 38052. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
ак сравнить string и char[] по содержимому?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.04.2011, 16:30
Ответы с готовыми решениями:

C++ как сравнить кавычки с char и string
В общем, приведу лучше кусочек кода, так понятнее будет) switch (buff){ case '"': \\тут внутри одинарных кавычек двойная ...

Как сравнить два char string
подскажите сделал задачу которая проверит является ли данная строка палиндромом вот код #include <iostream> #include...

Как сравнить элементы массива string и char?
Есть два массива: mas_ascii и str содержащий текст с файла char mas_ascii ; for (int i = 0; i < 256; ++i) { ...

20
 Аватар для dzjundzja88
289 / 234 / 32
Регистрация: 09.02.2011
Сообщений: 435
20.04.2011, 16:34
string это массив элементов char
допустим есть строка
string str = "abc";
обратившись к элементу массива str[1], ты получишь символ 'b'
0
 Аватар для NiceGuyEddy
220 / 143 / 35
Регистрация: 25.06.2010
Сообщений: 383
20.04.2011, 16:35
C#
1
2
string str = "bla bla bla";
char [] ch = str.ToCharArray();
Потом сравнивайте с другим массивом.
Хотя у dzjundzja88 проще . Я поторопился...
0
12 / 12 / 3
Регистрация: 09.05.2010
Сообщений: 384
20.04.2011, 16:39  [ТС]
NiceGuyEddy
В общем есть строка которая сохранена в char[] s, есть которая в ковычках: "фыва"
Как сравнить эту и эту.
if (s = "фыва") - не работает
0
 Аватар для NiceGuyEddy
220 / 143 / 35
Регистрация: 25.06.2010
Сообщений: 383
20.04.2011, 16:42
Цитата Сообщение от AKE Посмотреть сообщение
NiceGuyEddy
if (s = "фыва") - не работает
Одинарное равно - присвоение. Двойное равно - сравнение. Можно сравнить поэлементно. На Linq это вроде просто делается, но я в нем не силен пока.

Ну или так можно:
C#
1
2
3
4
5
6
7
8
9
10
11
12
            char[] s = new char[] { 'т', 'е', 'с','т' };            
            string str = "тест";
            string str1 = "";
            for (int i = 0; i < s.Length; i++)
            {
                str1 += s[i];
            }
            if (str == str1)
                Console.WriteLine("Равны");
            else
                Console.WriteLine("Не равны");
            Console.ReadLine();
0
 Аватар для dzjundzja88
289 / 234 / 32
Регистрация: 09.02.2011
Сообщений: 435
20.04.2011, 16:51
Если я не ошибаюсь, то char[] s - это должен быть массив, каждый элемент которого это один символ. А Вы пытаетесь один символ сравнить со строкой "фыва". И символ в шарпе, вроде бы, берётся в одинарные кавычки
0
Неадекват
 Аватар для freeba
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
20.04.2011, 20:12
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
using System;
 
namespace CompareString
{
    class Program
    {
        public static void Main(string[] args)
        {
            string s1 = "test";
            char[] s2 = new char[4]{'t','e','s','t'};
            if (string.Compare(s1, getStr(s2))==0) Console.WriteLine("==");
            else Console.WriteLine("!=");
            
            
            
            Console.Write("Press any key to continue . . . ");
            Console.ReadKey(true);
        }
        
        public static string getStr(char[] s)
        {
            string ret=string.Empty;
            for (int i=0; i<s.Length; i++)
                ret += s[i];
            return ret;
        }
    }
}
0
6 / 6 / 1
Регистрация: 04.01.2017
Сообщений: 465
23.04.2017, 17:06
freeba, доброго времени суток!
Подскажите, есть ли функция позволяющая сравнить отдельный элемент строки с каждым элементом массива символов?

Или это возможно только через цикл?
0
Неадекват
 Аватар для freeba
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
23.04.2017, 17:13
Vlad__i__mir, В LINQ есть метод Any
0
Эксперт .NET
 Аватар для Rius
13044 / 7611 / 1663
Регистрация: 25.05.2015
Сообщений: 23,153
Записей в блоге: 14
23.04.2017, 17:39
LINQ:
C#
1
2
3
4
5
6
string str1 = "asdf";
char[] chars2 = new char[] { 'a', 's', 'd', 'f' };
 
if (str1.SequenceEqual(chars2))
{
}
0
6 / 6 / 1
Регистрация: 04.01.2017
Сообщений: 465
23.04.2017, 17:52
доб

Добавлено через 4 минуты
Цитата Сообщение от freeba Посмотреть сообщение
Vlad__i__mir, В LINQ есть метод Any
Вы имели в виду IndexOfAny()?
0
Эксперт .NET
 Аватар для Rius
13044 / 7611 / 1663
Регистрация: 25.05.2015
Сообщений: 23,153
Записей в блоге: 14
23.04.2017, 18:00
Vlad__i__mir, он имел в виду IEnumerable<T>.Any().
0
Заблокирован
23.04.2017, 18:36
Цитата Сообщение от freeba Посмотреть сообщение
string ret=string.Empty;
Попутно: чем отличается string.Empty и "" ?
Чем в данном случае использование "" хуже?
0
Эксперт .NET
 Аватар для Rius
13044 / 7611 / 1663
Регистрация: 25.05.2015
Сообщений: 23,153
Записей в блоге: 14
23.04.2017, 18:59
titan4ik, фактически ничем уже не отличается. Пишите так, как читабельнее и как принято у вас.
Но IMHO лучше Empty:
  • Empty есть и у других классов, например EventArgs и Guid.
  • В "" легко не заметить пробела " ".
  • А ещё такой прикол с юникодом:
    Название: 2017-04-23_20-57-25.png
Просмотров: 635

Размер: 3.6 Кб
2
Эксперт .NET
 Аватар для Usaga
14101 / 9318 / 1349
Регистрация: 21.01.2016
Сообщений: 34,994
23.04.2017, 19:03
Цитата Сообщение от Rius Посмотреть сообщение
А ещё такой прикол юникодный
Я немного не въехал, как это так получается?..
0
23.04.2017, 19:04

Не по теме:

Usaga, в личку ответил :)

0
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
23.04.2017, 20:56
Rius,

Не по теме:

а вот это нехорошо, владеешь информацией - ф студию:)

0
Эксперт .NET
 Аватар для Wolfdp
3789 / 1766 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
23.04.2017, 21:47
Цитата Сообщение от NiceGuyEddy Посмотреть сообщение
На Linq это вроде просто делается,
с него лучше не начинать. На месте преподователя я бы скорее всего ожидал нечто такое...

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
            const string notMatch = "не совпадают";
            const string match = "совпадают";
 
            string str = "Nya!";
            char[] ch_arr = new[] { 'N', 'y', 'a', '!' };
 
            if (str.Length != ch_arr.Length)
                Console.WriteLine(notMatch);
 
            var result = true;
            for (var i = 0; i < str.Length; i++)
            {
                if (str[i] != ch_arr[i])
                {
                    result = false;
                    break;
                }
            }
 
            if (result)
                Console.WriteLine(match);
            else
                Console.WriteLine(notMatch);
 
            Console.ReadKey();
Добавлено через 8 минут
Rius, хитрая... котяра

I'd prefer string to String. choosing string.Empty over "" is a matter of choosing one and sticking with it. Advantage of using string.Empty is it is very obvious what you mean, and you don't accidentally copy over non-printable characters like "\x003" in your ""
0
Заблокирован
24.04.2017, 00:41
Цитата Сообщение от Rius Посмотреть сообщение
фактически ничем уже не отличается.
Вот тут кое-что: "Оказывается, что даже при использовании в конструкции if, сравнение со string.Empty работает в два раза медленнее, чем с константной пустой строкой "
Или это устаревшее?
0
Эксперт .NET
 Аватар для Wolfdp
3789 / 1766 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
24.04.2017, 00:52
Цитата Сообщение от titan4ik Посмотреть сообщение
Или это устаревшее?
скорее замеряли криво
http://stackoverflow.com/a/1588678
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.04.2017, 00:52
Помогаю со студенческими работами здесь

есть массив char. есть строка string. как присвоить значению string-a значение char-a?
есть массив char. есть строка string. как присвоить значению string-a значение char-a?

Как сравнить char и const char?
Очередной раз столкнулся с проблемкой, сравнивая объекты из массива (char) нужно сравнить с const char, но в массив я записываю данные...

Как из объекта String получить char* (НЕ const char*)
Доброго времени! Стандартная процедура работы с SD-card принимает параметр типа char *. Однако, объект String имеет метод(c_str)который...

Подскажите, пожалуйста, как преобразовать данные из excel в string или в char*, char perm [] в visual c++
Подскажите, пожалуйста, как преобразовать данные из excel в string или в char*, char perm также для вывода на экран среда visual c++ ...

Как сравнить введенную string с константой string
Как сравнить переменную String, вводимую с клавиатуры, с const string объявленную в начале кода? #include &lt;iostream&gt; #include...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru