@@ -154,7 +154,7 @@ PikaObj* PikaStdData_String_split(PikaObj* self, char* s) {
154154 PikaStdData_List___init__ (list );
155155
156156 Args buffs = {0 };
157- char * str = obj_getStr (self , "str" );
157+ char * str = strsCopy ( & buffs , obj_getStr (self , "str" ) );
158158
159159 char sign = s [0 ];
160160 int token_num = strCountSign (str , sign ) + 1 ;
@@ -173,7 +173,40 @@ PikaObj* PikaStdData_String_split(PikaObj* self, char* s) {
173173 return list ;
174174}
175175
176- int PikaStdData_String___len__ (PikaObj * self ){
176+ int PikaStdData_String___len__ (PikaObj * self ) {
177177 char * str = obj_getStr (self , "str" );
178178 return strGetSize (str );
179179}
180+
181+ char * PikaStdData_String_strip (PikaObj * self ) {
182+ Args buffs = {0 };
183+ char * str = strsCopy (& buffs , obj_getStr (self , "str" ));
184+ /* strip */
185+ char * str_start = str ;
186+ for (size_t i = 0 ; i < strGetSize (str ); i ++ ) {
187+ if (str [i ] != ' ' ) {
188+ str_start = (char * )(str + i );
189+ break ;
190+ }
191+ }
192+
193+ for (int i = strGetSize (str ) - 1 ; i >= 0 ; i -- ) {
194+ if (str [i ] != ' ' ) {
195+ str [i + 1 ] = '\0' ;
196+ break ;
197+ }
198+ }
199+
200+ obj_setStr (self , "_buf" , str_start );
201+ strsDeinit (& buffs );
202+ return obj_getStr (self , "_buf" );
203+ }
204+
205+ char * PikaStdData_String_replace (PikaObj * self , char * new , char * old ) {
206+ Args buffs = {0 };
207+ char * str = strsCopy (& buffs , obj_getStr (self , "str" ));
208+ str = strsReplace (& buffs , str , old , new );
209+ obj_setStr (self , "_buf" , str );
210+ strsDeinit (& buffs );
211+ return obj_getStr (self , "_buf" );
212+ }
0 commit comments