[Gambas-user] An utility component for Gambas, Accented characters

Lewis Balentine lewis at ...3412...
Tue Dec 2 20:06:38 CET 2014


I believe that these may be the characters of interest:
Private Const AccentInFilter As String = 
"ÀÁÂÃÄÅĀĂĄăāąàáâãäåÇĆĊĈČćĉċčçĎĐďđĒÈÉÊËĔĖĘĚẼẽēĕėęěèéêëĜĞĠĢĝğġģĤĦħĥÌÍÎÏĨĪĬĮİĩīĭįıìíîïĴĵĶķĸĹĺĻĽŁļľĿŀłÑŃŅŇńņňʼnñŊŋÒÓÔÕÖŌŎŐØōŏőòóôõöðøŔŖŘŕŗřŚŜŞŠşŝśšŢŤŦţťŧÙÚÛÜŨŪŬŮŰŲũūŭůűųùúûüŴŵŶŸÝŷýÿŹŻŽżźž"
Private Const AccentOutFilter As String = 
"AAAAAAAAAaaaaaaaaaCCCCCcccccDDddEEEEEEEEEEdeeeeeeeeeGGGGggggHHhhIIIIIIIIIiiiiiiiiiJjKkkLlllllllllNNNNnnnnnnnOOOOOOOOOooooooooooRRRrrrSSSSssssTTTtttUUUUUUUUUUuuuuuuuuuuWwYYYyyyZZZzzz"
Each string is 181 characters in length.


On 12/01/2014 05:28 PM, Lewis Balentine wrote:
> 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 at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gambas-user




More information about the User mailing list