[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