local fn CollapseString( inString as CFStringRef ) as CFStringRef CFMutableStringRef outString = fn MutableStringWithCapacity(0) long index unichar prevChar = 0, currChar for index = 0 to len(inString) - 1 currChar = fn StringCharacterAtIndex( inString, index ) if ( currChar != prevChar ) then MutableStringAppendFormat( outString, @"%C", currChar ) prevChar = currChar next end fn = outString window 1, @"Collapse String", (0,0,600,300) CFStringRef string, collapsedString string = @"" collapsedString = fn CollapseString( string ) printf @"<<<%@>>> %ld\n<<<%@>>> %ld\n",string,len(string),collapsedString,len(collapsedString) string = @"\"If I were two-faced, would I be wearing this one?\" --- Abraham Lincoln " collapsedString = fn CollapseString( string ) printf@"<<<%@>>> %ld\n<<<%@>>> %ld\n",string,len(string),collapsedString,len(collapsedString) string = @"..1111111111111111111111111111111111111111111111111111111111111117777888" collapsedString = fn CollapseString( string ) printf@"<<<%@>>> %ld\n<<<%@>>> %ld\n",string,len(string),collapsedString,len(collapsedString) string = @"I never give 'em hell, I just tell the truth, and they think it's hell. " collapsedString = fn CollapseString( string ) printf@"<<<%@>>> %ld\n<<<%@>>> %ld\n",string,len(string),collapsedString,len(collapsedString) string = @" --- Harry S Truman " collapsedString = fn CollapseString( string ) printf@"<<<%@>>> %ld\n<<<%@>>> %ld\n",string,len(string),collapsedString,len(collapsedString) string = @"\"AAAAAll that glitters is not goldDDDD.\" - William Shakespeare" collapsedString = fn CollapseString( string ) printf@"<<<%@>>> %ld\n<<<%@>>> %ld\n",string,len(string),collapsedString,len(collapsedString) HandleEvents