00001 #include "convert.h" 00002 #include "message.h" 00003 00005 string remove_leading_blanks( const string& instring ) 00006 { 00007 if(( instring.size() <= 0 ) || (instring.find(' ')==string::npos) ) return( instring ); 00008 int nspace=instring.find_first_not_of(' '); 00009 return instring.substr( nspace, instring.size()-nspace+1); 00010 } 00011 00013 string remove_trailing_blanks( const string& instring ) 00014 { 00015 if(( instring.size() <= 0 ) || (instring.find(' ')==string::npos) ) return( instring ); 00016 int nspace=instring.find_last_not_of(' '); 00017 return instring.substr( 0, nspace+1); 00018 } 00019 00021 string remove_extra_blanks( const string& instring ) 00022 { 00023 vector<string> split_string = split(instring); 00024 vector<string> no_blanks; 00025 for (vector<string>::iterator itr=split_string.begin(); itr!=split_string.end(); ++itr){ 00026 if( (*itr).size() != 0 ) no_blanks.push_back(*itr); 00027 } 00028 return join(no_blanks," "); 00029 } 00030 00032 string remove_all_blanks( const string& instring ) 00033 { 00034 vector<string> split_string = split(instring); 00035 vector<string> no_blanks; 00036 for (vector<string>::iterator itr=split_string.begin(); itr!=split_string.end(); ++itr){ 00037 if( (*itr).size() != 0 ) no_blanks.push_back(*itr); 00038 } 00039 return join(no_blanks,""); 00040 } 00041 00043 string remove_comments( const string& instring, const string& comment_string ){ 00044 if (instring.find(comment_string)==string::npos) return instring; 00045 int new_string_length = instring.find(comment_string); 00046 return instring.substr( 0, new_string_length ); 00047 } 00048 00051 vector< string > split( const string& s, const string pattern ) 00052 { 00053 vector< string > result; 00054 int begin_slice = 0; 00055 int end_slice = 0; 00056 int slice_length = 0; 00057 while ( s.find( pattern, begin_slice ) != string::npos ) 00058 { 00059 end_slice = s.find( pattern, begin_slice )+1; 00060 slice_length = end_slice - begin_slice - 1; 00061 if ( slice_length > 0 ) 00062 result.push_back( s.substr( begin_slice, slice_length ) ); 00063 begin_slice = end_slice+pattern.size()-1; 00064 } 00065 result.push_back( s.substr( begin_slice ) ); 00066 return result; 00067 } 00068 00070 string join( const vector< string >& ls, const string& pattern ) 00071 { 00072 string result=""; 00073 for ( vector<string>::const_iterator itr = ls.begin(); itr != ls.end(); ++itr ) 00074 { 00075 vector<string>::const_iterator next_itr = itr; 00076 ++next_itr; 00077 result += *itr; 00078 if ( next_itr != ls.end() ) result += pattern; 00079 } 00080 return result; 00081 } 00082 00084 string tolower( const string& s ) 00085 { 00086 string t = s; 00087 int length = t.length(); 00088 for (int i = 0; i < length; i++) t[i] = tolower(t[i]); 00089 return t; 00090 } 00091 00093 string operator*( int i, const string& x ){ 00094 string xTimes(""); 00095 for (int j=0;j<i;++j) xTimes+=x; 00096 return xTimes; 00097 } 00098 00100 string center( const string& stuff, int len ){ 00101 int numSpaces = len-stuff.size(); 00102 numSpaces/=2; 00103 string aSpace(" "); 00104 string output(numSpaces*aSpace+stuff+numSpaces*aSpace); 00105 if (output.size()==static_cast<unsigned int>(len)) return output; else return output+" "; 00106 } 00107 00109 string ljust( const string& stuff, int len ){ 00110 int numSpaces = len-stuff.size(); 00111 string aSpace(" "); 00112 return stuff+numSpaces*aSpace; 00113 } 00114 00116 string rjust( const string& stuff, int len ){ 00117 int numSpaces = len-stuff.size(); 00118 string aSpace(" "); 00119 return numSpaces*aSpace+stuff; 00120 } 00121 00122 00124 string remove( const string& instring, const string& target ){ 00125 return replace( instring, target, ""); 00126 } 00127 00129 string replace( const string& instring, const string& old_pattern, const string& new_pattern ){ 00130 return join( split( instring, old_pattern ), new_pattern ); 00131 } 00132 00134 string slice( const string& instring, int istart, int ifinish ){ 00135 int ibegin, iend; 00136 if (istart<0) { ibegin = instring.size()+istart;} 00137 if (ifinish<0) { iend = instring.size()+ifinish;} 00138 return instring.substr( ibegin, iend-ibegin ); 00139 } 00140 00141