Set string.ToCharArray() to the first letter

Hello guys. Here is my current code:

   void Start()
   {
    private IEnumerator coroutine;
    coroutine = TypeText(); 
   }
    IEnumerator TypeText()
    {
        textLeftCopy.text = "";
        textRightCopy.text = "";
        uiTextLeft.text = "";
        uiTextRight.text = "";

        foreach (char letter in message.ToCharArray())
        {
            uiTextLeft.text = textLeftCopy.text + letter;
            uiTextRight.text = textRightCopy.text + letter;
            //yield return 0;
            yield return new WaitForSeconds(0.2f);
        }
        
    }
void updateText()               //UPDATES TEXT VALUE
    {

        message = "Hello World";
        StartCoroutine(coroutine);
    }
void Update()
{
  if(<condition met>)
   {
       updateText();
    }
   if(<stop writing>)
    {
     StopCoroutine(coroutine);
     }
}

Basic Info: i’m working on VR and wants my text to be displayed twice at a specific gap. That’s why Left and Right texts and im using another two variables to store the message so that my input and output buffers are different , otherwise it was ruining my message itself by writing on the variable from which it was reading also.
I want to display a text stored in message in a typing-like method using the TypeText() co-routine. But every time i call this co-routine the text does not reset and starts writing off from where it last left off.
I have full control of when to start typing the text and when to make it stop and disappear.
Consider my text is : “Hello World”
If i stopped the text from writing at “Hell” and when i again wants it to start typing again, it is starting from “Hell” and not from scratch again. I know I must set the message to start again, but i am unable to do that up to this point, failing at each try.
So, basically, every time i starts displaying the text, it should start from the first letter of the ‘message’ variable and not from where it last left off. Any help would be much appreciated. Thanks guys.

Okay guys! I got it. I used a For loop instead of a foreach loop and used some global variables to get the state of the current status of text.

IEnumerator TypeText()
    {
            
        textLeftCopy.text = "";
        textRightCopy.text = "";
        uiTextLeft.text = "";
        uiTextRight.text = "";

        arr = message.ToCharArray();

        for (i = 0; i < arr.Length; i++)
        {
            if (textWait == 1)
            {
                yield return new WaitForSeconds(2f);   
                textWait = 0;
            }
            char letter = arr*;*

uiTextLeft.text = textLeftCopy.text + letter;
uiTextRight.text = textRightCopy.text + letter;
yield return new WaitForSeconds(letterPause);
}

}