最近项目中用js的escape函数,要求原生的也用,网络搜索了半天没有结果,只好对着java的实现自己实现一个,放在这里希望有需要的小伙伴能用到。
个人对oc不是很熟悉,如果你有更好的实现,也别喷我,提出来让我也学习学习
//
// main.m
// esp
//
// Created by 李勇 on 15/6/16.
// Copyright (c) 2015年 李勇. All rights reserved.
//
#import <Foundation/Foundation.h>
#include <ctype.h>
NSString * tohex(int tmpid)
{
NSString *nLetterValue;
NSString *str =@"";
long long int ttmpig;
for (int i = 0; i<9; i++) {
ttmpig=tmpid%16;
tmpid=tmpid/16;
switch (ttmpig)
{
case 10:
nLetterValue =@"A";break;
case 11:
nLetterValue =@"B";break;
case 12:
nLetterValue =@"C";break;
case 13:
nLetterValue =@"D";break;
case 14:
nLetterValue =@"E";break;
case 15:
nLetterValue =@"F";break;
default:nLetterValue=[[NSString alloc]initWithFormat:@"%lli",ttmpig];
}
str = [nLetterValue stringByAppendingString:str];
if (tmpid == 0) {
break;
}
}
return str;
}
NSString * esp(NSString * src){
int i;
NSString* tmp = @"";
for (i=0; i<[src length]; i++) {
unichar c = [src characterAtIndex:(NSUInteger)i];
if(isdigit(c)||isupper(c)|islower(c)){
tmp = [NSString stringWithFormat:@"%@%c",tmp,c];
}else if((int)c <256){
tmp = [NSString stringWithFormat:@"%@%@",tmp,@"%"];
if((int)c <16){
tmp =[NSString stringWithFormat:@"%@%@",tmp,@"0"];
}
tmp = [NSString stringWithFormat:@"%@%@",tmp,tohex((int)c)];
}else{
tmp = [NSString stri