Skip to Content

This function will help you to remove all special characters from a word expect space .The output will contains only the alphabets a-z A-Z and space. The other characters and number will be removed from the word. It also help you to convert non English word into corresponding English word based on the ASCII values. Please find below given example. ÀÁÂÄÃÅ are non English(Latin) characters will convert into corresponding English character A.

  1. e.g. ÀŠGÄR@# to ASGAR And àšgär()\/ to asgar

Please find below code.

#$LV_OUTPUT_WORD : Output Word after convertion.

#$LV_LNGH_WORD : To get the characters one by one.

#$GV_SNGL_LETTER : Each character of a word.

#$P_INPUT_WORD : Input Word passed using this parameter.

$LV_OUTPUT_WORD = NULL;

$LV_LNGH_WORD = 1;

WHILE ($LV_LNGH_WORD <= length($P_INPUT_WORD))

BEGIN

$GV_SNGL_LETTER=SUBSTR ($P_INPUT_WORD,$GV_LNGH_WORD,1);

IF((ASCII( $GV_SNGL_LETTER) >= 65 AND ASCII( $GV_SNGL_LETTER) <= 90 ) OR (ASCII( $GV_SNGL_LETTER) = 32 ) OR (ASCII( $GV_SNGL_LETTER) >= 97 AND ASCII( $GV_SNGL_LETTER) <= 122))

BEGIN

$GV_SNGL_LETTER = $GV_SNGL_LETTER;           

END

ELSE IF((ASCII( $GV_SNGL_LETTER) >= 210 AND ASCII( $GV_SNGL_LETTER) <= 214) OR ASCII($GV_SNGL_LETTER) = 216)

BEGIN

$GV_SNGL_LETTER = CHR(79);  

END

ELSE IF(ASCII( $GV_SNGL_LETTER) >= 242 AND ASCII( $GV_SNGL_LETTER) <= 246)

BEGIN

$GV_SNGL_LETTER =  CHR(111);              

END

ELSE IF (ASCII( $GV_SNGL_LETTER) >= 192 AND ASCII( $GV_SNGL_LETTER) <= 197)

BEGIN

$GV_SNGL_LETTER = CHR(65);  

END

ELSE IF (ASCII( $GV_SNGL_LETTER) >= 224 AND ASCII( $GV_SNGL_LETTER) <= 229)

BEGIN

$GV_SNGL_LETTER = CHR(97);  

END

ELSE IF(ASCII( $GV_SNGL_LETTER) >= 200 AND ASCII( $GV_SNGL_LETTER) <= 203)

BEGIN

$GV_SNGL_LETTER = CHR(69);  

END

ELSE IF(ASCII( $GV_SNGL_LETTER) >= 232 AND ASCII( $GV_SNGL_LETTER) <= 235)

BEGIN

$GV_SNGL_LETTER = CHR(101);               

END

ELSEIF(ASCII( $GV_SNGL_LETTER) >= 204 AND ASCII( $GV_SNGL_LETTER) <= 207)

BEGIN

$GV_SNGL_LETTER = CHR(73);  

END

ELSEIF(ASCII( $GV_SNGL_LETTER) >=  236 AND ASCII( $GV_SNGL_LETTER) <= 239)

BEGIN

$GV_SNGL_LETTER = CHR(105);               

END

ELSE IF(ASCII( $GV_SNGL_LETTER) >= 217 AND ASCII( $GV_SNGL_LETTER) <= 220)

BEGIN

$GV_SNGL_LETTER = CHR(85);

END

ELSE IF(ASCII( $GV_SNGL_LETTER) >= 249 AND ASCII( $GV_SNGL_LETTER) <= 252)

BEGIN

$GV_SNGL_LETTER = CHR(117);

END

ELSE IF(ASCII( $GV_SNGL_LETTER) = 241 OR ASCII( $GV_SNGL_LETTER) = 209 )

BEGIN

$GV_SNGL_LETTER = CHR(110);               

END

ELSE IF(ASCII( $GV_SNGL_LETTER) = 199)

BEGIN

$GV_SNGL_LETTER = CHR(67);  

END

ELSE IF(ASCII( $GV_SNGL_LETTER) = 231)

BEGIN

$GV_SNGL_LETTER = CHR(99);  

END

ELSE IF(ASCII( $GV_SNGL_LETTER) = 209)

BEGIN

$GV_SNGL_LETTER = CHR(78);  

END

ELSE IF(ASCII( $GV_SNGL_LETTER) = 241)

BEGIN

$GV_SNGL_LETTER = CHR(110);               

END

ELSE IF(ASCII( $GV_SNGL_LETTER) = 221 OR ASCII( $GV_SNGL_LETTER) = 159)

BEGIN

$GV_SNGL_LETTER = CHR(89);  

END

ELSE IF(ASCII( $GV_SNGL_LETTER) = 253 OR ASCII( $GV_SNGL_LETTER) = 255)

BEGIN

$GV_SNGL_LETTER = CHR(121);               

END

ELSE IF(ASCII( $GV_SNGL_LETTER) = 142)

BEGIN

$GV_SNGL_LETTER = CHR(90);  

END

ELSE IF(ASCII( $GV_SNGL_LETTER) = 158)

BEGIN

$GV_SNGL_LETTER = CHR(122);               

END

ELSE IF(ASCII( $GV_SNGL_LETTER) = 138)

BEGIN

$GV_SNGL_LETTER = CHR(83);  

END

ELSE IF(ASCII( $GV_SNGL_LETTER) = 154)

BEGIN

$GV_SNGL_LETTER = CHR(115);               

END

ELSE IF(ASCII( $GV_SNGL_LETTER) = 131)

BEGIN

$GV_SNGL_LETTER = CHR(102);               

END

ELSE

BEGIN

$GV_SNGL_LETTER = NULL;       

END

$GV_LNGH_WORD = $GV_LNGH_WORD+1;

$GV_OUTPUT_WORD = $GV_OUTPUT_WORD||$GV_SNGL_LETTER;

END

RETURN $GV_OUTPUT_WORD;

This is code that will remove all special characters and convert non English (Latin) word to corresponding English word based on the ASCII value.

Regards

Asgar

To report this post you need to login first.

12 Comments

You must be Logged on to comment or reply to a post.

  1. Former Member

    Hi Asgar,

    I tried using this function but BODS does not return the right ASCII value for the non English characters. It returns -1 and hence does not get replaced with the nearest equivalent Eng character.

    Is there any language, codepage setting to be done?

    Many thanks,

    (0) 
      1. Former Member

        Dear all,

        I am trying to separate string and want to remove a special character but getting error. Please help me out.

        Input

            Atlas_Id                                                         Sr_id

        X/P01/ZOOMAR UK                        Zoomarine -One of it’s Kind%Ticket Only

        ………                                ……….

        ………..                              ………  

        Output

        Field1          Field2             Filed3                                 Sr_id

          X                  PO1            ZOOMAR UK                   Zoomarine One of its Kind Ticket Only

        Regards

        Varsha

        (0) 
        1. Former Member Post author

          Hi varsh,

          For separate string use word_ext() function

          To remove special character find out ascii code of corresponding character and convert it to normal english ascii value

          for example :- ASCII of â 225 and corresponding english character a have ascii value 97

          use below link to get ascii values

          ASCII Code – The extended ASCII table

          Regards

          ASgar

          (0) 

Leave a Reply