local fn CommaQuibbler( s as CFArrayRef ) as CFStringRef CFStringRef result = NULL select ( len(s) ) case 0: exit fn = @"{}" case 1: exit fn = fn StringWithFormat( @"{%@}", s[0] ) case 2: exit fn = fn StringWithFormat( @"{%@ and %@}", s[0], s[1] ) case else result = fn StringWithFormat( @"{%@}", fn ArrayComponentsJoinedByString( s, @", " ) ) CFRange lastComma = fn StringRangeOfStringWithOptions( result, @",", NSBackwardsSearch ) result = fn StringByReplacingCharactersInRange( result, lastComma, @" and" ) end select end fn = result print fn CommaQuibbler( @[] ) print fn CommaQuibbler( @[@"ABC"] ) print fn CommaQuibbler( @[@"ABC", @"DEF"] ) print fn CommaQuibbler( @[@"ABC", @"DEF", @"G", @"H"] ) HandleEvents