UGH, another stupid mistake on my part. Well that having been corrected I offer the following:
'------------------------ ' Gambas module file ' The problem I have as an ignorant, narrow minded, English speaking ' American is that I do not know of many accented characters .... :>( Private Const AccentInFilter As String = "ŷŶũŨẽẼĩĨòåš" Private Const AccentOutFilter As String = "yYuUeEiIoas" Public Sub Main() Dim S As String S = "This is a test: ŷŶũŨẽẼĩĨòåš" Print S S = StripAccentCharacters(S) Print S End Public Function StripAccentCharacters(InputString As String) As String Return StringFilter(InputString, AccentInFilter, AccentOutFilter) End Private Function StringFilter(InputString As String, InFilter As String, OutFilter As String) As String ' This would be much more efficent in "C" with single byte ASCII characters ' but with UTF-8 there are 1,2,3 and 4 byte characters. Thus we need a higher ' level functions to deal with variable size characters anyway. Dim P, I As Integer Dim C As String Dim R As String = "" If InputString = "" Then Return R For I = 1 To String.Len(InputString) ' get the next character C = String.Mid(InputString, I, 1) ' try to locate the character in the input filter string P = String.InStr(InFilter, C) ' if found then If P > 0 Then ' use the character from the output filter string R = R & Mid(OutFilter, P, 1) Else ' otherwise the character from the input string R = R & C Endif Next Return R End '------------------------------------------------------ This is a test: ŷŶũŨẽẼĩĨòåš This is a test: yYuUeEiIoas '------------------------------------------------------ The advantage to this approach is that that different Filter Strings and Functions can be quickly constructed as needed for the desired modifications. You could also use it to build a "one-timepad" encryption algorithm (which is where I extracted it from --- some of my old VB6 code). On 12/01/2014 04:42 PM, Charlie Reinl wrote: > Am Montag, den 01.12.2014, 16:27 -0600 schrieb Lewis Balentine: >>>> ...and read the documentation of InStr carefully again.<< >> "This function only deal with ASCII strings. To manipulate UTF-8 >> strings, use the String class." >> >> P = String.InStr("Ũ", "ŷŶũŨẽẼĩĨòåš", gb.Binary) >> P = String.InStr("Ũ", "ŷŶũŨẽẼĩĨòåš", gb.IgnoreCase) >> P = String.InStr("Ũ", "ŷŶũŨẽẼĩĨòåš") >> P = String.InStr("Ũ", "xxxxŷŶũŨẽẼĩĨòåšXXXX", gb.Binary) >> P = String.InStr("Ũ", "xxxxŷŶũŨẽẼĩĨòåšXXXX", gb.IgnoreCase) >> P = String.InStr("Ũ", "xxxxŷŶũŨẽẼĩĨòåšXXXX") >> >> same result ... P=0 >> > Salut Lewis, > > Benoît said : and read the documentation of InStr carefully again. > Me too re-read http://gambaswiki.org/wiki/comp/gb/string/instr , > (inverse your arguments). > > InStr(String As String, Pattern As String ) > ------------------------------------------------------------------------------ Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server from Actuate! Instantly Supercharge Your Business Reports and Dashboards with Interactivity, Sharing, Native Excel Exports, App Integration & more Get technology previously reserved for billion-dollar corporations, FREE http://pubads.g.doubleclick.net/gampad/clk?id=157005751&iu=/4140/ostg.clktrk _______________________________________________ Gambas-user mailing list Gambas-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gambas-user