static void Main(string[] args) { DynString S = new DynString(); DynString T = new DynString("world"); S.Concat(T); T = new DynString("Hello "); S.Insert(T, 0); S.Insert(new DynString(" cruel"), 5); Console.WriteLine("S = " + S); Console.WriteLine("S.Substring(0, 4) = " + S.Substring(0, 4)); S.Erase(6, 11); Console.WriteLine("S = " + S); Console.ReadLine(); /* * Resultado esperado: * S = Hello cruel * S.Substring(0, 4) = Hello * S = Hello * */ }
// Devolver el substring que empieza en la posicion start hasta la posicion // end (ambos extremos son incluyentes) public DynString Substring(int start, int end) { DynString subString = new DynString(); subString.arr = new char[end + 1 - start]; for (int i = 0; i < subString.arr.Length; i++) { subString.arr[i] = arr[start]; start++; } string mySubstring = new string(subString.arr); DynString ret = new DynString(mySubstring); return(ret); }
// Insertar el MyString str justamente antes de la posicion pos. Debes rodar // los caracteres desde la posicion pos hasta la ultima hacia la derecha. // Si pos == 0, inserta al inicio de MyString; si pos == Size, inserta // al final de MyString (ver uso en el metodo Concat) public void Insert(DynString str, int pos) { //DynString mynewString = new DynString(); //mynewString.arr = new char[Size + str.Size]; if (Size == 0) { Size += 3; } if (Size < str.Size + Size) { Array.Resize(ref arr, Size * FACTOR_CRECIMIENTO); Size *= FACTOR_CRECIMIENTO; } if (Size > str.Size) { for (int i = 0; i < str.Size; i++) { arr[pos] = str.arr[i]; pos++; } } }
// Concatenar el str al final de este string public void Concat(DynString str) { Insert(str, Size); }