public
Created

Strip Special Word chars from a String in Groovy

  • Download Gist
strip.groovy
Groovy
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
/** Strips MS Word 'special' chars out of
* a String, for when people paste stuff into your app from Word
*
* Probably incomplete, but a good start
*
* Based on http://www.fourmilab.ch/webtools/demoroniser/
*/
def wordCleaner( String input ) {
[
((char)0x82): ',',
((char)0x83): 'f',
((char)0x84): ',,',
((char)0x85): '...',
((char)0x88): '^',
((char)0x89): 'ppt',
((char)0x8B): '<',
((char)0x8C): 'Oe',
((char)0x91): '\'',
((char)0x92): '\'',
((char)0x93): '"',
((char)0x94): '"',
((char)0x95): '*',
((char)0x96): '-',
((char)0x97): '--',
((char)0x98): '~',
((char)0x99): 'TM',
((char)0x9B): '>',
((char)0x9C): 'oe',
((char)0xA9): '(c)',
((char)0xAE): '(r)',
((char)0xBC): '1/4',
((char)0xBD): '1/2',
((char)0xBE): '3/4',
((char)8208): '-',
((char)8209): '-',
((char)8211): '--',
((char)8212): '--',
((char)8213): '--',
((char)8214): '||',
((char)8215): '_',
((char)8216): '\'',
((char)8217): '\'',
((char)8218): ',',
((char)8219): '\'',
((char)8220): '"',
((char)8221): '"',
((char)8222): ',,',
((char)8223): '"',
((char)8226): '*',
((char)8227): '>',
((char)8228): '*',
((char)8229): '..',
((char)8230): '...',
((char)8231): '-',
((char)8471): '(p)',
((char)8480): 'SM',
((char)8482): 'TM',
((char)8531): '1/3',
((char)8532): '2/3',
((char)8533): '1/5',
((char)8534): '2/5',
((char)8535): '3/5',
((char)8536): '4/5',
((char)8537): '1/6',
((char)8538): '5/6',
((char)8539): '1/8',
((char)8540): '3/8',
((char)8541): '5/8',
((char)8542): '7/8',
((char)9785): ':-(',
((char)9786): ':-)',
((char)61514): ':-)',
((char)61515): ':-|',
((char)61516): ':-(',
].withDefault { it }.with { map ->
input.collect {
map[ (char)it ]
}
}.join()
}
 
assert wordCleaner( 'User “tim” completed ½ the tests ☺' ) == 'User "tim" completed 1/2 the tests :-)'

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.