I'm really wondering what kind of class you may be in, or what kind of programming task in the real world, could possibly require splitting a string into two parts based on the idea of "half."
However, it's easy to do. Here's one way you could do it:
string bar = "|";
string[] splitStr = new string[] {bar};
string str = "12345678";
string[] byHalf = str.Insert(str.Length / 2, bar).Split(splitStr,StringSplitOptions.RemoveEmptyEntries);
Of course, this method is easily confused if the string you are splitting has the character you use to split it with.
Here's an example using 'StringBuilder for you to study:
string str = "12345678";
StringBuilder sb = new StringBuilder(str);
int half1 = sb.Length/2;
int half2 = sb.Length - half1;
char[] halfOne = new char[half1];
char[] halfTwo = new char[half2];
sb.CopyTo(0, halfOne, 0, half1);
sb.CopyTo(half1, halfTwo, 0, half2);
string[] results = new string[]
{
new string(halfOne), new string(halfTwo)
};
sb.Clear();
Understand what's going on in each step of this, and you'll learn something that will be useful in the future when you are in a programming scenario where you have to deal with "heavy" string use :)