String.Empty in strings, need some explanation if possible :)

Posted by Pabuc on Stack Overflow See other posts from Stack Overflow or by Pabuc
Published on 2011-01-12T08:43:14Z Indexed on 2011/01/12 8:53 UTC
Read the original article Hit count: 531

Hello all,

2 days ago, there was a question related to string.LastIndexOf(String.Empty) returning the last index of string. So I thought that; a string can always contain string.empty between characters like:

"testing" == "t" + String.Empty + "e" + String.Empty +"sting" + String.Empty;

After this, I wanted to test if String.IndexOf(String.Empty) was returning 0 because since String.Empty can be between any char in a string, that would be what I expect it to return and I wasn't wrong.

string testString = "testing";
int index = testString.LastIndexOf(string.Empty); // index is 6
index = testString.IndexOf(string.Empty); // index is 0

It actually returned 0. I started to think that if I could split a string with String.Empty, I would get at least 2 string and those would be String.Empty and rest of the string since String.IndexOf(String.Empty) returned 0 and String.LastIndexOf(String.Empty) returned length of the string.. Here is what I coded:

string emptyString = string.Empty;
char[] emptyStringCharArr = emptyString.ToCharArray();
string myDummyString = "abcdefg";
string[] result = myDummyString.Split(emptyStringCharArr);

The problem here is, I can't obviously convert String.Empty to char[] and result in an empty string[]. I would really love to see the result of this operation and the reason behind this. So my questions are:

  1. Is there any way to split a string with String.Empty?

  2. If it is not possible but in an absolute world which it would be possible, would it return an array full of chars like [0] = "t" [1] = "e" [2] = "s" and so on or would it just return the complete string? Which would make more sense and why?

Thank you for your time.

© Stack Overflow or respective owner

Related posts about c#

Related posts about string