View mode: basic / threaded / horizontal-split · Log in · Help
March 06, 2012
Translate for chars to strings
There's a really useful function 'translate' in std.string, used like this:

__gshared dchar[dchar] MangleTable;

shared static this()
{
   MangleTable =
   [
       '*':'p',  // ptr
       '&':'r',  // reference
       '<':'L',  // left angle
       '>':'R',  // right angle
       ' ':'_',  // space
   ];
}

string mangleType(string input)
{
   return input.translate(MangleTable);
}

However I'm looking for something which translates characters to
strings. Of course that also implies potential reallocation. Does
anyone have such a function in some library?

Note that I'm not looking for .mangleof, I need to work on strings of
C++ names, not D symbols.
March 06, 2012
Re: Translate for chars to strings
On 03/05/2012 04:32 PM, Andrej Mitrovic wrote:
> There's a really useful function 'translate' in std.string, used like this:
>
> __gshared dchar[dchar] MangleTable;
>
> shared static this()
> {
>      MangleTable =
>      [
>          '*':'p',  // ptr
>          '&':'r',  // reference
>          '<':'L',  // left angle
>          '>':'R',  // right angle
>          ' ':'_',  // space
>      ];
> }
>
> string mangleType(string input)
> {
>      return input.translate(MangleTable);
> }
>
> However I'm looking for something which translates characters to
> strings. Of course that also implies potential reallocation. Does
> anyone have such a function in some library?
>
> Note that I'm not looking for .mangleof, I need to work on strings of
> C++ names, not D symbols.

One of the translate() overloads can translate from dchar to string. The 
third example is exactly about that:

  http://dlang.org/phobos/std_string.html#translate

string[dchar] transTable3 = ['e' : "5", 'o' : "orange"];
assert(translate("hello world", transTable3) == "h5llorange worangerld");

Ali
March 06, 2012
Re: Translate for chars to strings
Hmm somehow I missed that. Thanks.

On 3/6/12, Ali Çehreli <acehreli@yahoo.com> wrote:
> On 03/05/2012 04:32 PM, Andrej Mitrovic wrote:
>> There's a really useful function 'translate' in std.string, used like
>> this:
>>
>> __gshared dchar[dchar] MangleTable;
>>
>> shared static this()
>> {
>>      MangleTable =
>>      [
>>          '*':'p',  // ptr
>>          '&':'r',  // reference
>>          '<':'L',  // left angle
>>          '>':'R',  // right angle
>>          ' ':'_',  // space
>>      ];
>> }
>>
>> string mangleType(string input)
>> {
>>      return input.translate(MangleTable);
>> }
>>
>> However I'm looking for something which translates characters to
>> strings. Of course that also implies potential reallocation. Does
>> anyone have such a function in some library?
>>
>> Note that I'm not looking for .mangleof, I need to work on strings of
>> C++ names, not D symbols.
>
> One of the translate() overloads can translate from dchar to string. The
> third example is exactly about that:
>
>    http://dlang.org/phobos/std_string.html#translate
>
> string[dchar] transTable3 = ['e' : "5", 'o' : "orange"];
> assert(translate("hello world", transTable3) == "h5llorange worangerld");
>
> Ali
>
Top | Discussion index | About this forum | D home