u can use remove and substring function for remove char from string

On Thu, Oct 15, 2009 at 10:07 AM, Arsalan Tamiz <[email protected]> wrote:

> I can't find a real bug in your code but here are my suggestions
>
> 1) StringBuilderBin1.Append(shEntry.shOldIDNumber).Append(",");
>
> in my opinion (maybe NOT correct) above line should be written like this
>
> StringBuilderBin1.Append(shEntry.shOldIDNumber + ",");
>
> 2) "clearTrailingComma" <- this is actually a function returning
> "StringBuilder" so there is NO need to pass the same thing by reference.
> Simply don't use "ref" here. 3) "if ( (TmpBuilder != null) ||
> (TmpBuilder.Length > 0) )" <- you should use "&&" instead of "||"
> 4) "if (TmpBuilder[TmpBuilder.Length - 1].ToString ().EndsWith(","))" <-
> this check is strange, you are getting the last character, converting it to
> string, and then using the "EndsWith" why? obviously it would be a single
> character.
> 5) In your function "clearTrailingComma" you should use parameter directly,
> there is NO need to again assign that parameter to some other variable.
> 6) Put some break points and check the values at different points of your
> code
>
> Regards,
> Arsalan Tamiz
>
> On Wed, Oct 14, 2009 at 6:55 AM, Benj Nunez <[email protected]> wrote:
>
>>
>> Hello everyone,
>>
>> I'm stumped at the moment trying to figure out how to remove a quote
>> (",") character from a single entry within a Stringbuilder object. I
>> have code that looks like this:
>>
>>
>> public bool parseEntries(ref BackgroundWorker worker,
>>                                  ref List<StringHolder> ACVMEntries,
>>                                  ref DoWorkEventArgs e)
>> {
>>   ...
>>  if (ACVMEntries != null)
>>  {
>>       ..
>>      foreach (StringHolder shEntry in ACVMEntries)
>>      {
>>           string CVMEntry = shEntry.shType.ToLower().Trim();
>>           ...
>>
>>           if (CVMEntry == someConst.foo1)
>>           {
>>                 StringBuilderBin1.Append(shEntry.shOldIDNumber).Append
>> (",");
>>           }
>>           else if  (CVMEntry == someConst.foo2)
>>           {
>>                 StringBuilderBin2.Append(shEntry.shOldIDNumber).Append
>> (",");
>>           }
>>           ...  // and so on...
>>      }  // of foreach
>>
>>      // Remove extraneous comma at the end of each StringBuilder.
>>      ...
>>     StringBuilder1 = Utils.clearTrailingComma(ref StringBuilder1);
>>     StringBuilder2 = Utils.clearTrailingComma(ref StringBuilder2);
>>     ...
>>
>> }
>>
>> The implementation of clearTrailingComma() looks like this:
>>
>>
>>        public static StringBuilder clearTrailingComma(ref
>> StringBuilder ABuilder)
>>        {
>>            StringBuilder TmpBuilder = ABuilder;
>>
>>            if ( (TmpBuilder != null) || (TmpBuilder.Length > 0) )
>>            {
>>                // Remove last quote
>>                if (TmpBuilder[TmpBuilder.Length - 1].ToString
>> ().EndsWith(","))
>>                {
>>                    // Remove just one character at the end of the
>> string.
>>                    try
>>                    {
>>                        TmpBuilder.Remove(TmpBuilder.Length - 1,
>> 1);   // Problem here***
>>                    }
>>                    catch (System.ArgumentOutOfRangeException)
>>                    {
>>                        throw;
>>                    }
>>                    catch (System.Exception)
>>                    {
>>                        throw;
>>                    }
>>                }
>>            }
>>
>>            return TmpBuilder;
>>        }
>>
>>
>>
>> My issue is with a call to this line:
>>
>>
>> TmpBuilder.Remove(TmpBuilder.Length - 1, 1);   // Problem here***
>>
>>
>> This line can handle several entries within the Stringbuilder object,
>> but it *cannot* remove
>> the "," character when there is only *one* and only *one* entry. How
>> can this be?
>>
>>
>> Any advice?
>>
>>
>>
>>
>>
>>
>>
>

Reply via email to