Re: very newbie question (sring confusion)

2011-06-03 Thread Lloyd Dupont

I did the following, what do you think of my implementation?
(checking if my string and array usage could be improved / powered 
up!!!)


string[] _locales = [en-AU, fr-FR];
string getCurrentLocal() { return fr-BE; }
string[] getCandidates()
{
   auto local = getCurrentLocal();

   string match = null;
   for (int i = _locales.length; i--0;)
   {
   if(_locales[i] == local)
   {
   match = _locales[i];
   break;
   }
   }

   string partial = null;
   if(local.length = 2  match == null)
   {
   for (int i = _locales.length; i--0;)
   {
   auto tmpl = _locales[i];
   if (tmpl.length  2  tmpl[0] == local[0]  tmpl[1] == 
local[1])

   {
   partial = tmpl;
   break;
   }
   }
   }

   string[] result;
   if(match)
   {
   result.length = result.length + 1;
   result[result.length-1] = match;
   }
   if(partial  partial != match)
   {
   result.length = result.length + 1;
   result[result.length-1] = partial;
   }
   if(match != _locales[0]  partial != _locales[0])
   {
   result.length = result.length + 1;
   result[result.length-1] = _locales[0];
   }
   return result;
}



Re: very newbie question (sring confusion)

2011-06-03 Thread bearophile
Lloyd Dupont:

 I did the following, what do you think of my implementation?

Those for loops seem better as foreach ones, or even reverse foreach ones.
Probably in std.algorithm there is stuff to shorten your code.

Bye,
bearophile


Re: very newbie question (sring confusion)

2011-06-03 Thread Jonathan M Davis
On 2011-06-03 09:55, Lloyd Dupont wrote:
 I did the following, what do you think of my implementation?
 (checking if my string and array usage could be improved / powered
 up!!!)
 
 string[] _locales = [en-AU, fr-FR];
 string getCurrentLocal() { return fr-BE; }
 string[] getCandidates()
 {
 auto local = getCurrentLocal();
 
 string match = null;
 for (int i = _locales.length; i--0;)
 {
 if(_locales[i] == local)
 {
 match = _locales[i];
 break;
 }
 }
 
 string partial = null;
 if(local.length = 2  match == null)
 {
 for (int i = _locales.length; i--0;)
 {
 auto tmpl = _locales[i];
 if (tmpl.length  2  tmpl[0] == local[0]  tmpl[1] ==
 local[1])
 {
 partial = tmpl;
 break;
 }
 }
 }
 
 string[] result;
 if(match)
 {
 result.length = result.length + 1;
 result[result.length-1] = match;
 }
 if(partial  partial != match)
 {
 result.length = result.length + 1;
 result[result.length-1] = partial;
 }
 if(match != _locales[0]  partial != _locales[0])
 {
 result.length = result.length + 1;
 result[result.length-1] = _locales[0];
 }
 return result;
 }

You should probably take a look at std.algorithm.find.

- Jonathan M Davis


Re: very newbie question (sring confusion)

2011-06-03 Thread Lloyd Dupont

std.algorithm!
will have a look, thanks!

bearophile  wrote in message news:isb5ql$1i23$1...@digitalmars.com... 


Lloyd Dupont:


I did the following, what do you think of my implementation?


Those for loops seem better as foreach ones, or even reverse foreach ones.
Probably in std.algorithm there is stuff to shorten your code.

Bye,
bearophile