📄 xstring.cpp
字号:
int XString::find( const char * str, int index , bool cs ){ int i; int len=strlen(str); if(index < 0 )index=0; for(i=index;i<m_nLength;) { if(cs) { if(m_pString[i] == str[0]) { if( mid(i,len) == str ) return i; else i ++; } else i ++; } else //cs == false { if( XString(m_pString[i]).lower() == XString(str[0]).lower()) { if( mid(i,len).lower() == XString(str).lower() ) return i; else i ++; } else i ++; } } return -1;}XString XString::left( int len ){ return mid(0,len) ;}XString XString::right( int len ){ return mid(m_nLength-len,len) ; }XString XString::mid( int index, int len ){ if(index < 0)index=0; char *tmp=new char[m_nLength+1]; memset(tmp,'\0',m_nLength+1); for(int i = index; i < index + len; i ++) { if(i < m_nLength) tmp[i-index]=m_pString[i]; else break; } XString xstr=tmp; delete []tmp; return xstr;}XString XString::lower(){ int i; for(i = 0; i < m_nLength; i++) { if( m_pString[i] >= 'A' && m_pString[i] <= 'Z' ) m_pString[i] += 32; } return XString(m_pString); }XString XString::upper(){ int i; for(i = 0; i < m_nLength; i++) { if( m_pString[i] >= 'a' && m_pString[i] <= 'z' ) m_pString[i] -= 32; } return XString(m_pString); }XString XString::stripWhiteSpace(){ int i,j,s=0,e=0; for(i = 0, j = 0; i < m_nLength; i++) { if( m_pString[i] == 9 || m_pString[i] == 10 || m_pString[i] == 11 || m_pString[i] == 12 || m_pString[i] == 13 || m_pString[i] == 32 ) { if (j != i)break; j ++;s=j; } } for(i = 0, j = 0; i < m_nLength; i++) { if( m_pString[ m_nLength - i -1] == 9 || m_pString[ m_nLength - i -1] == 10 || m_pString[ m_nLength - i -1] == 11 || m_pString[ m_nLength - i -1] == 12 || m_pString[ m_nLength - i -1] == 13 || m_pString[ m_nLength - i -1] == 32 ) { if (j != i)break; j ++; } } e=m_nLength - j -1; char *tmp=new char[m_nLength+1]; memset(tmp,'\0',m_nLength+1); for(i = s; i <= e; i++) tmp[i-s]=m_pString[i]; XString xstr=tmp; delete []tmp; return xstr; }XString XString::simplifyWhiteSpace(){ XString str=stripWhiteSpace(); int i,j; char *tmp=new char[m_nLength+1]; memset(tmp,'\0',m_nLength+1); for(i = 0,j = 0; i < str.m_nLength; i++,j++) { if( str.m_pString[i] == 9 || str.m_pString[i] == 10 || str.m_pString[i] == 11 || str.m_pString[i] == 12 || str.m_pString[i] == 13 )tmp[j]=' '; else tmp[j]=str.m_pString[i]; } char *tmp1=new char[m_nLength+1]; memset(tmp1,'\0',m_nLength+1); for(i = 0,j = 0; i < (int)strlen(tmp); i++) { if( tmp[i] == 32 && tmp[i+1] == 32 )continue; tmp1[j++]=tmp[i]; } XString xstr=tmp1; delete []tmp; delete []tmp1; return xstr;}XString & XString::insert( int index, XString & xstr ){ insert(index,xstr.m_pString); return *this; }XString & XString::insert( int index, char * str ){ if(index < 0)index = 0; if(index > m_nLength)index=m_nLength; int lenstr=strlen(str); char *newstr=new char[lenstr + m_nLength +1]; memset(newstr,'\0',lenstr + m_nLength +1); int i; for(i = 0; i < index; i ++) { newstr[i]=m_pString[i]; } for(i = index; i < index+lenstr; i ++) { newstr[i]=str[i - index]; } for(i = index + lenstr; i < lenstr + m_nLength ; i ++) { newstr[i]=m_pString[i-lenstr]; } delete []m_pString; m_pString = newstr; m_nLength = lenstr + m_nLength; return *this;}XString & XString::insert( int index, char c ){ char tmp[2]; tmp[0] = c; tmp[1] = '\0'; insert(index,tmp); return *this; }XString & XString::replace( char *delstr, char * insstr,bool cs ){ int i; XString str(""); XString newxstr(""); str=m_pString; while( (i = str.find(delstr, 0, cs)) != -1) { newxstr += str.left(i); newxstr += insstr; str = str.right(str.m_nLength - i - strlen(delstr) ); } newxstr += str; delete []m_pString; m_nLength = newxstr.m_nLength; m_pString = new char[m_nLength + 1]; memset(m_pString, '\0', m_nLength + 1); strcpy(m_pString,newxstr.m_pString); return *this;}XString & XString::replace( XString & delxstr, XString & insxstr,bool cs ){ return replace(delxstr.m_pString,insxstr.m_pString,cs);}XString & XString::replace( char *delstr, XString & insxstr,bool cs ){ return replace(delstr,insxstr.m_pString,cs); }XString & XString::replace( XString & delxstr, char * insstr,bool cs ){ return replace(delxstr.m_pString,insstr,cs); }XString & XString::replace( char delstr, char insxstr,bool cs ){ char tmp1[2],tmp2[2]; tmp1[0]=delstr; tmp2[0]=insxstr; tmp1[1]=tmp2[1]='\0'; return replace(tmp1,tmp2,cs);}int XString::contain( const char * str, bool cs ){ int i,n=0; XString str1(""); str1=m_pString; while( (i = str1.find(str, 0, cs)) != -1) { n++; str1 = str1.right(str1.m_nLength - i - strlen(str) ); } return n; }int XString::contain( const char str, bool cs ){ char tmp2[2]; tmp2[0] = str; tmp2[1] = '\0'; return contain(tmp2,cs);}int XString::contain( const XString & str, bool cs ){ return contain(str.m_pString,cs); }XString XString::section( const char * sep, int start ){ int i,t=0,s=0,e=0,len=strlen(sep); if(start < 0)start=0; XString xstr(""); xstr=sep; xstr+=m_pString; xstr+=sep; i=t=0; while ( (i = xstr.find(sep, i)) != -1) { t++; i += len; } if( t-2 < start ) return XString(""); i=t=0; while ( (i = xstr.find(sep, i)) != -1) { if(t == start) { s=i; break; } t++; i += len; } i=t=0; e=xstr.m_nLength; while ( (i = xstr.find(sep, i)) != -1) { if(t == start + 1) { e=i; break; } t++; i += len; } //cio<<s<<"----"<<e<<enter; if( xstr.mid(s,e-s) == sep ) return XString(""); else return XString(xstr.mid(s+len,e-s-len));}XString XString::section( const char sep, int start ){ char tmp[2]; tmp[0]=sep; tmp[1]='\0'; return section(tmp,start); }XString XString::section( const XString & sep, int start ){ return section(sep.m_pString,start); }XString XString::section( const char * sep, int start,int end ){ { int i,t=0,len=strlen(sep); XString xstr(""); xstr=sep; xstr+=m_pString; xstr+=sep; i=t=0; while ( (i = xstr.find(sep, i)) != -1) { t++; i += len; } if( t-2 < start )start = t-2; if( t-2 < end )end = t-2; } int i; XString xstr(""); for(i=start; i<=end; i++) { xstr+=section(sep,i); if(i != end) xstr+=sep; } return XString(xstr);}XString XString::section( const char sep, int start,int end){ char tmp[2]; tmp[0]=sep; tmp[1]='\0'; return section(tmp,start,end); }XString XString::section( const XString & sep, int start,int end ){ return section(sep.m_pString,start,end); }int XString::setWidth( long len){ delete []m_pString; m_nLength=len; m_pString=new char[len+1]; memset(m_pString,'\0',len + 1); return 1;}XString & XString::fill(char ch){ for(int i=0;i<m_nLength;i++) m_pString[i]=ch; return *this;}XString XString::reverse(){ char a; for(int i=0;i<m_nLength/2;i++) { a=m_pString[m_nLength - 1 - i]; m_pString[m_nLength - 1 - i] = m_pString[i]; m_pString[i]=a; } return *this;}char XString::at( int i ){ if(i<0)i=0; if(i>m_nLength - 1)i=m_nLength - 1; return m_pString[i];}char XString::operator[] ( int i ){ return at(i);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -