C函数仿写 JAVA::String操作

2014-11-24 00:07:53 · 作者: · 浏览: 0

模拟JAVA String 函数处理

HLUtil.h

/**

* Ext-C Java::String.

* replaceFirst Str1 string will replace the first occurrence of the string str2 into str3.

*/

static void replaceFirst(char *str1,char *str2,char *str3);



/**

* Ext-C Java::String.

* Will appear in all str2 str1 are replaced str3.

*/

static void replace(char *str1,char *str2,char *str3);



/**

* Ext-C Java::String.

* Src string interception, labeled start from the beginning to the end-1 (end front) of the string stored in dest (index starts at 0).

*/

static void substring(char *dest,char *src,int start,int end);



/**

* Ext-C Java::String.

* Return the src subscript index character.

*/

static char charAt(char *src,int index);



/**

* Ext-C Java::String.

* Return the position of the first occurrence of str2 (The following table index) in str1, there is no return -1.

*/

static int indexOf(char *str1,char *str2);



/**

* Ext-C Java::String.

* Location (subscript) returns the last occurrence of str1 str2, there is no return -1.

*/

static int lastIndexOf(char *str1,char *str2);



/**

* Ext-C Java::String.

* Remove the first non-blank character in front of the left str whitespace characters (spaces and horizontal tabs).

*/

static void ltrim(char *str);



/**

* Ext-C Java::String.

* Delete str last non-blank character behind all whitespace characters (spaces and horizontal tabs).

*/

static void rtrim(char *str);



/**

* Ext-C Java::String.

* Whitespace characters to delete str ends.

*/

static void trim(char *str);



HLUtil.cpp:

void HLUtil:: replaceFirst(char *str1,char *str2,char *str3)

{

int length = strlen(str1)+1;

if(length>1)

{

char *str4 =new char[length];

char *p;

strcpy(str4,str1);

if((p=strstr(str1,str2))!=NULL)

{

while(str1!=p&&str1!=NULL)

{

str1++;

}

str1[0]='\0';

strcat(str1,str3);

strcat(str1,strstr(str4,str2)+strlen(str2));

}

delete str4;

str4 = NULL;

}

}



void HLUtil:: replace(char *str1,char *str2,char *str3)

{

while(strstr(str1,str2)!=NULL)

{

replaceFirst(str1,str2,str3);

}

}



void HLUtil:: substring(char *dest,char *src,int start,int end)

{

int i=start;

if(start>strlen(src))return;

if(end>strlen(src))

end=strlen(src);

while(i

{

dest[i-start]=src[i];

i++;

}

dest[i-start]='\0';

return;

}



char HLUtil:: charAt(char *src,int index)

{

char *p=src;

int i=0;

if(index<0||index>strlen(src))

return 0;

while(i

return p[i];

}



int HLUtil:: indexOf(char *str1,char *str2)

{

char *p=str1;

int i=0;

p=strstr(str1,str2);

if(p==NULL)

return -1;

else{

while(str1!=p)

{

str1++;

i++;

}

}

return i;

}



int HLUtil:: lastIndexOf(char *str1,char *str2)

{

char *p=str1;

int i=0,len=strlen(str2);

p=strstr(str1,str2);

if(p==NULL)return -1;

while(p!=NULL)

{

for(;str1!=p;str1++)i++;

p=p+len;

p=strstr(p,str2);

}

return i;

}



void HLUtil:: ltrim(char *str)

{

int i=0,j,len=strlen(str);

while(str[i]!='\0')

{

if(str[i]!=32&&str[i]!=9)break;

i++;

}

if(i!=0)

for(j=0;j<=len-i;j++)

{

str[j]=str[j+i];

}

}



void HLUtil:: rtrim(char *str)

{

char *p=str;

int i=strlen(str)-1;

while(i>=0)

{

if(p[i]!=32&&p[i]!=9)break;

i--;

}

str[++i]='\0';

}



void HLUtil:: trim(char *str)

{

ltrim(str);

rtrim(str);

}