模拟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<end)
{
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<index)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);
}
相关推荐
std::string是C++的标准字符串类,它可以使用c_str()函数将其转换为char*类型,然后使用Marshal::Copy函数将其拷贝到托管的byte数组中,最后使用System::Text::Encoding::UTF8->GetString函数将byte数组转换为托管的...
在C语言标准函数库中,还有许多其他的头文件和函数,例如:<string.h>头文件提供了一组字符串处理函数,例如:strcpy()、strcat()等,用于实现字符串处理操作。 需要注意的是,C语言标准函数库中的函数都可以被重载...
在C++编程中,`std::string`是一个非常重要的类,它用于表示和操作字符串。在自定义类设计中,通常需要实现四个特殊成员函数:普通构造函数、拷贝构造函数、析构函数和赋值运算符。这些函数是面向对象编程中的核心...
例如,`java层向jni层传递数组_转:Android开发实践:Java层与Jni层的数组传递_byte[]是双向传递的数组、指针.url`详细讲解了如何在Java和JNI之间传递`byte[]`数组。对于字符串,JNI提供`NewStringUTF`和`...
这个默认构造函数不会执行任何特定操作,但对于像`std::string`这样的成员,它的存在意味着在创建结构体实例时,每个成员都会得到初始化。 总结来说,`malloc()`仅分配内存,不调用构造函数,因此不适合用于含有非...
12. **内置函数**:Java提供了一些内置函数,如`Math`类中的`sqrt()`(平方根)、`random()`(随机数)等。 13. **异常处理**:`try-catch-finally`语句块用于捕获和处理程序运行时可能出现的错误。 14. **Lambda...
本项目名为"C语言实现String字符串及其函数stringUtil",主要关注的是如何在C语言环境中自定义处理字符串的函数,以扩展标准库中提供的功能。通过分析`stringUtil.c`源代码和`stringUtil.h`头文件,我们可以了解一些...
`c_str`函数将`string`转换为C风格的字符串,即`const char*`。这在需要与不支持`std::string`的旧式API交互时很有用。例如: ```cpp std::string str = "C Style"; const char* cStr = str.c_str(); ``` #### 6. `...
C语言的标准库(如`stdio.h`、`math.h`、`string.h`等)包含了大量预先定义的函数,例如`printf`用于输出,`scanf`用于输入,`strlen`计算字符串长度,`sqrt`求平方根等。这些函数库是C语言的基础,为开发者提供了...
Java通过JNI(Java Native Interface)调用C语言函数库是一种常见的技术实践,它允许Java程序直接与本地操作系统和硬件交互,提高性能或者利用已有的C/C++代码库。本资料"Java通过JNI调用C语言函数库的方法.zip"提供...
Java语言作为一种高级编程语言,以其跨平台性和丰富的类库闻名,但有时我们可能需要利用C语言或其他低级语言的功能,例如访问操作系统底层API或者优化性能。在这种情况下,Java提供了Java Native Interface (JNI) 这...
### Java:构造函数与对象 #### 第一章:构造函数揭秘——创造者的第一次触碰 在Java编程语言中,构造函数扮演着极其重要的角色。它是一种特殊的成员方法,主要用于对象的初始化过程。构造函数没有返回类型,其...
本资源“常用C语言函数快速查询”是一个非常实用的工具,为程序员提供了一个方便的速查手册,涵盖了C语言中的众多核心函数,帮助开发者快速理解和应用。 速查手册通常会包含以下几个部分: 1. **标准库函数**:...
C语言函数库,也称为C标准库,是C编程语言的核心组成部分,包含了大量预先定义的函数,供程序员在编写程序时使用。这些函数涵盖了输入输出、字符串处理、数学运算、内存管理等多个方面,极大地丰富了C语言的功能并...
C语言中提供了多种字符串函数,用于实现字符串的操作和处理。下面将对这些函数进行详细的解释和说明。 1. memset函数 函数原型:void *memset(void *dest, int c, size_t count); 函数作用:将dest前面count个...
Java 中颜色的 String 和 Color 对象之间的互相转换 在 Java 中,颜色的表示形式有多种,包括字符串形式和 Color 对象形式。这两种形式可以互相转换,本文将介绍 Java 中颜色的 String 和 Color 对象之间的互相转换...
inline-java: 实现从Haskell调用任何JVM函数
Java 8 函数式编程 Java 8 函数式编程是指在 Java 8 中引入的一种新的编程范式,它强加了额外的约束,即所有数据必须是不可变的,设置一次,永不改变。函数式编程将值传递给函数,该函数然后生成新值但从不修改...
"C语言函数速查工具"是一款专为C程序员设计的实用参考资源,尤其适合初学者和有经验的开发者在编写代码时快速查找和理解C语言中的各种标准函数。 这个工具提供了中文界面,使得国内用户在学习和使用过程中能够更...
作为C开发的必备工具,"C语言函数表"是程序员日常编码的重要参考资源。这份由清华大学学生精心编纂的资料,旨在帮助开发者更深入地理解和运用C语言中的各种函数。 在C语言中,函数是代码组织的基本单元,它封装了一...