예를 들어 string val = "abc,def,hij"라는 문자열을 ","로 구분해서 배열로 변경하려한다면
string[] tmp = val.Split(','); 이렇게 하면 된다. 그런데 배열 구분자가 1바이트가 아니라면?
다시 예를 들어본다면 string val = "abc<br/>def<br/>hij" 이런형태의 문자열에서 "<br/>"을 split하려고 하면
불가능하다. 이를 split해주는 방법은 아래와같다.
string[] _tmp = System.Text.RegularExpressions.Regex.Split(val, "<br/>");
그러나... ↑ 요고로 해결이 안될경우도 있다. ㅡ,.ㅡ;;;
그래서 확실한 방법은 아래와 같다.
public static string[] SplitByString(string inVal, string split)
{
int offset = 0;
int index = 0;
int[] offsets = new int[inVal.Length + 1];
while (index < inVal.Length)
{
int indexOf = inVal.IndexOf(split, index);
if (indexOf != -1)
{
offsets[offset++] = indexOf;
index = (indexOf + split.Length);
}
else
{
index = inVal.Length;
}
}
string[] final = new string[offset + 1];
if (offset == 0)
{
final[0] = inVal;
}
else
{
offset--;
final[0] = inVal.Substring(0, offsets[0]);
for (int i = 0; i < offset; i++)
{
final[i + 1] = inVal.Substring(offsets[i] + split.Length, offsets[i + 1] - offsets[i] - split.Length);
}
final[offset + 1] = inVal.Substring(offsets[offset] + split.Length);
}
return final;
}
어디서 퍼왔는데 출처까먹음 ㅠㅠ