Removing Characters within a string-Java -


i keep getting error removing character within string. have tried find on site , nothing has worked. not post. rather maybe answer explains why shows , how fix in case else encounters issue. without further due, here code:

public jtextfield clean() {     string cleaner = topfield.gettext();     cleaner=cleaner.tolowercase();     int length = cleaner.length();     stringbuilder combiner = new stringbuilder(cleaner);     (int x=0;x+1<length;x++)     {        char c = cleaner.charat(x);        char c1 = cleaner.charat(x+1);        if(c==' ' && c1==' ')         {             combiner.deletecharat(x);             cleaner=combiner.tostring();         }        if(c!='a' && c=='b' && c!='c' && c!='d' && c!='f' && c!='g' && c!='h' && c!='i' && c!='j' && c!='k' && c!='l' && c!='m' && c!='n' && c!='o' && c!='p' && c!='q' && c!='r' && c!='s' && c!='t' && c!='u' && c!='v' && c!='w' && c!='x' && c!='y' && c!='z' && c!=' ')         {combiner.deletecharat(x);          cleaner=combiner.tostring();}        }             topfield.settext(cleaner);        return topfield;                } 

i receive error states value out of bounds length of string input. please note method inside class created removes character not alphabet or space.

thanks in advance

there number of things pop out @ me.

  • your basing loop on fixed value (length), actual length of string can decrease...
  • you potentially removing 2 characters per loop (there 2 deletecharat calls)
  • the loop doesn't take account shrinking size of string. example. x == 1, remove character @ x, increment x 1 (x == 2), skipping character (the character @ position 2 @ position 1
  • your if statement unnecessarily long. in fact, depending on needs, use character.isdigit or character.isletter , character.iswhitespace

string cleaner = topfield.gettext(); cleaner = cleaner.tolowercase(); stringbuilder combiner = new stringbuilder(cleaner); int x =0; while (x < combiner.length()) {     char c = combiner.charat(x);     if (c >= 'a' && c <= 'z' || c == ' ') {         combiner.deletecharat(x);     } else {         x++;     } } 

from looks of code, appear wanting filter jtextfield allow numeric values. better use jspinner, jformattedtextfield or documentfilter , ensure correctness of data it's entered...imho


Comments

Popular posts from this blog

monitor web browser programmatically in Android? -

Shrink a YouTube video to responsive width -

wpf - PdfWriter.GetInstance throws System.NullReferenceException -