2

SOLVED:

I used the following code:

var compareinfo = CultureInfo.CurrentCulture.CompareInfo;
var index = compareinfo.IndexOf(strA, strB, CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase);
return index > -1;

Possible Duplicate:
Ignoring accented letters in string comparison

I have a public Kiosk application where users use it to search for a place of interest. Say I have a shop name with the Café word. The kiosk only allows input of English alphabets through an on-screen keyboard. The problem is when I type in Cafe(without the accented é) the search is not valid because the user could not input the character é. I want the application to allow the normal e to be searchable to all accented e and likewise for all other respective characters. How can i do that?

EDIT: the shop name is "Bruce Café" and i search for "cafe" and it should show in my search results.

using

string.Compare("Bruce Café", "cafe", CultureInfo.CurrentCulture, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace)

returns -1

and

string.Compare("Ben-Gurion University (BGU)", "cafe", CultureInfo.CurrentCulture, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace)

also returns -1

which i don't know why is it so...

Community
  • 1
  • 1
icube
  • 2,578
  • 1
  • 30
  • 63

2 Answers2

1

If you're doing this in code:

string.Compare(s1, s2, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace);

and if you're doing this in T-SQL:

SELECT *
FROM YourTable
WHERE
   ColumnName COLLATE Latin1_general_CI_AI Like '%cafe%' COLLATE Latin1_general_CI_AI
tomfanning
  • 9,552
  • 4
  • 50
  • 78
1

If you are doing your own string comparisons, then you can ignore the accents by specifying CompareOptions.IgnoreNonSpace to one of the string comparison methods that accepts a CompareOptions parameter, for example this String.Compare

Matthew Watson
  • 104,400
  • 10
  • 158
  • 276