powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как сравнить 2 строки case insensitive ?
38 сообщений из 38, показаны все 2 страниц
Как сравнить 2 строки case insensitive ?
    #39753767
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, какой правильный способ сравнить 2 строки case insansitive ?
Надо что бы 'Папа' = 'папа'
И что бы 'Папааа'+1ГБ <> 'мамааа'+1ГБ
Как использовать IEqualityComparer, и можно ли использовать его тут ?
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39753769
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AnsiCompareText
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39753770
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
- Luke, use ToLowerInvariant or ToUpperInvariant to compare case insensitive.


http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.SysUtils.TStringHelper
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39753771
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShowMessage('TEST'.ToLowerInvariant.Contains('t').ToString(TUseBoolStrs.True));
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39753772
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/SysUtils_CompareText@string@string.html]http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/SysUtils_CompareText@string@string.html

CompareText compares S1 and S2 and returns 0 if they are equal. If S1 is greater than S2, CompareText returns an integer greater than 0. If S1 is less than S2, CompareText returns an integer less than 0. CompareText is not case sensitive and is not affected by the current locale.
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39753777
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDi,

Меня пугает слово Ansi в юникоде.
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39753779
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

Я знал, что предложат использовать что-то ToLower.
Но использовать это нельзя.
Сначала ToLower должна перевести 2 строки по 1ГБ текста в нижний регистр, а потом увидит, что различается первый символ.
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39753787
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BЯ знал, что предложат использовать что-то ToLower.
Но использовать это нельзя.
Сначала ToLower должна перевести 2 строки по 1ГБ текста в нижний регистр, а потом увидит, что различается первый символ.
Хочешь остановить прогресс? Для чего тогда наращивать гигабайты и гигагерцы?
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39753790
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanХочешь остановить прогресс?

Нет. Я хочу сравнить 2 строки между собой.
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39753792
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BJaDi,

Меня пугает слово Ansi в юникоде.

Зря. Достаточно один раз кликнуть, что бы реализацию посмотреть.
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39753794
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot makhaon]Valery_BJaDi,

Меня пугает слово Ansi в юникоде.

Зря.
ANSI на ASCII похоже, вот и страшно.
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39753801
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
27.12.2018 9:52, Valery_B пишет:

> Надо что бы
> 'Папа' = 'папа'

AnsiSameText()
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39753802
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BX11,

Я знал, что предложат использовать что-то ToLower.
Но использовать это нельзя.
Сначала ToLower должна перевести 2 строки по 1ГБ текста в нижний регистр, а потом увидит, что различается первый символ.
В лоб... переводи посимвольно и сравнивай символы... или чанками...
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39753833
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11 http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/SysUtils_CompareText@string@string.html]http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/SysUtils_CompareText@string@string.html
CompareText compares S1 and S2 and returns 0 if they are equal. If S1 is greater than S2, CompareText returns an integer greater than 0. If S1 is less than S2, CompareText returns an integer less than 0. CompareText is not case sensitive and is not affected by the current locale.

Только лучше Ansi CompareText(), т.к. простой CompareText() (который без LocaleOptions) не-ascii символы сравнивает побайтно.
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39753887
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Фэйтл Эра]makhaonпропущено...


Зря.
ANSI на ASCII похоже, вот и страшно.

ANSI и ASCII соотносятся примерно так же, как канал и канализация :)
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39753910
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot makhaon]Фэйтл Эрапропущено...


ANSI и ASCII соотносятся примерно так же, как канал и канализация :)

как гонорея и гонорар
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39753914
asviridenkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AnsiSameText / AnsiCompareText те еще бомбы замедленного действия
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39753985
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BСначала ToLower должна перевести 2 строки по 1ГБ текстаА вы переводите по 4К
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39753994
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asviridenkovAnsiSameText / AnsiCompareText те еще бомбы замедленного действия
Если работать с английский/русским текстом будут проблемы когда-нибудь?
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39753997
asviridenkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDiasviridenkovAnsiSameText / AnsiCompareText те еще бомбы замедленного действия
Если работать с английский/русским текстом будут проблемы когда-нибудь?

Зависит от локали в системе
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39754021
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDiЕсли работать с английский/русским текстом будут проблемы когда-нибудь?
Если строки юникодовые то не будет.
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39754032
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
27.12.2018 16:06, asviridenkov пишет:
> Зависит от локали в системе

только если сознательно отказаться от MBCS.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39754044
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BДобрый день, какой правильный способ сравнить 2 строки case insansitive ?
Надо что бы 'Папа' = 'папа'
И что бы 'Папааа'+1ГБ <> 'мамааа'+1ГБ
Как использовать IEqualityComparer, и можно ли использовать его тут ?Если вопрс упирается в быстродействие - сначала сравни длину строк а потом сравнивай их по частям. По 100*(номер итерации) символов, к примеру.
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39754055
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatЕсли вопрс упирается в быстродействие - сначала сравни длину строк а потом сравнивай их по частям. По 100*(номер итерации) символов, к примеру.Нельзя. Строки могут быть одинаковыми при разной длине. Например: Krijshof и Krijshof
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39754059
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_А вы переводите по 4К
rgreatЕсли вопрс упирается в быстродействие - сначала сравни длину строк а потом сравнивай их по частям. По 100*(номер итерации) символов, к примеру.
Вопрос - т.е. сравнение case insensitive я должен писать с нуля?

На C# пишется так:
Код: c#
1.
2.
3.
4.
5.
var s = "Всем Привет";
if (s.Equals("всем привет", StringComparison.InvariantCultureIgnoreCase) == true)
    return "equal";
else
    return "not equal";


Результат:
equal
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39754061
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_nigger,

А кто нормализацию не делает тот ссзб
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39754083
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_B_Vasilisk_А вы переводите по 4К
rgreatЕсли вопрс упирается в быстродействие - сначала сравни длину строк а потом сравнивай их по частям. По 100*(номер итерации) символов, к примеру.
Вопрос - т.е. сравнение case insensitive я должен писать с нуля?

На C# пишется так:
Код: c#
1.
2.
3.
4.
5.
var s = "Всем Привет";
if (s.Equals("всем привет", StringComparison.InvariantCultureIgnoreCase) == true)
    return "equal";
else
    return "not equal";


Результат:
equal

И в Delphi так можно
Код: pascal
1.
2.
3.
4.
var
  b: Boolean;
begin
  b := string.Compare('Папа', 'папа', [TCompareOption.coIgnoreCase]) = 0;
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39754097
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyА кто нормализацию не делает тот ссзб
Не всегда нужно. Про NFKD и NFKC вообще не так много кто знает, а AnsiCompareText справиться с большинством ситуаций. Для экзотики уже пусть играются с флагами CompareStringW и CompareStringEx
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39754099
asviridenkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyJaDiЕсли работать с английский/русским текстом будут проблемы когда-нибудь?
Если строки юникодовые то не будет.

Зря так думаешь
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39754101
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asviridenkovЗря так думаешь
Давай пример с проблемами.
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39754104
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-CiteИ в Delphi так можно
Код: pascal
1.
2.
3.
4.
var
  b: Boolean;
begin
  b := string.Compare('Папа', 'папа', [TCompareOption.coIgnoreCase]) = 0;


Это в итоге вызов CompareString из WinAPI.
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39754108
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatЭто в итоге вызов CompareString из WinAP
AnsiCompare... тоже.
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39754116
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatX-CiteИ в Delphi так можно
Код: pascal
1.
2.
3.
4.
var
  b: Boolean;
begin
  b := string.Compare('Папа', 'папа', [TCompareOption.coIgnoreCase]) = 0;


Это в итоге вызов CompareString из WinAPI.
В C# это выльется в вызов CompareStringEx из WinApi
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39754147
Гирлионайльдо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39754160
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фигня это всё. Вы опечатки отловите, а Чувствительность к регистру символов дело поправимое
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39754182
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гирлионайльдо InternalCompareStringOrdinalIgnoreCase
Это в Mono... Я только что проверил, в консольном приложении на .Net идет вызов CompareStringEx
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39754340
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Cite
Код: pascal
1.
string.Compare('Папа', 'папа', [TCompareOption.coIgnoreCase]) = 0;


ок, так у буду делать.
Но сравнение с нулём выглядит как-то не понятно.
X-CiteВ C# это выльется в вызов CompareStringEx из WinApi

Не верное утверждение для .NET
Ты не можешь точно знать, что там он в результате сделает, да это и не нужно знать.
Это зависит от конкретной связки версии ОС + .NET
NET.Core может вызывать другую функцию.
...
Рейтинг: 0 / 0
Как сравнить 2 строки case insensitive ?
    #39754540
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BX-Cite
Код: pascal
1.
string.Compare('Папа', 'папа', [TCompareOption.coIgnoreCase]) = 0;


ок, так у буду делать.
Но сравнение с нулём выглядит как-то не понятно.
X-CiteВ C# это выльется в вызов CompareStringEx из WinApi

Не верное утверждение для .NET
Ты не можешь точно знать, что там он в результате сделает, да это и не нужно знать.
Это зависит от конкретной связки версии ОС + .NET
NET.Core может вызывать другую функцию.

.Net Framework 4.5.1 Console Application вызывается CompareStringEx
.Net Core 2.2 Вызывает что-то свое, но активно юзает мультибайтовые winapi
...
Рейтинг: 0 / 0
38 сообщений из 38, показаны все 2 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как сравнить 2 строки case insensitive ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]