Skip to content

Instantly share code, notes, and snippets.

@karenpayneoregon
Created May 24, 2024 12:09
Show Gist options
  • Save karenpayneoregon/9a61f0de918b176985ffa5373323b481 to your computer and use it in GitHub Desktop.
Save karenpayneoregon/9a61f0de918b176985ffa5373323b481 to your computer and use it in GitHub Desktop.
Split string

The extension method SplitByCase given a string with upper/lowercased letters like KarenPayne will produce Karen Payne.

Alternates

string.Join(" ",Regex.Split(firstLastName, @"(?<!^)(?=[A-Z])"))

From stackoverflow

public static string InsertSpaceBeforeUpperCase(this string str)
{   
  var sb = new StringBuilder();

  char previousChar = char.MinValue; // Unicode '\0'

  foreach (char c in str)
  {
      if (char.IsUpper(c))
      {
          // If not the first character and previous character is not a space, insert a space before uppercase

          if (sb.Length != 0 && previousChar != ' ')
          {
              sb.Append(' ');
          }           
      }

      sb.Append(c);

      previousChar = c;
  }

  return sb.ToString();
}
string firstLastName = "KarenPayne";
var separated = firstLastName.SplitByCase();
public static class StringExtensions
{
public static string SplitByCase(this string input)
{
if (string.IsNullOrEmpty(input))
{
return input;
}
Span<char> result = stackalloc char[input.Length * 2];
var resultIndex = 0;
for (int index = 0; index < input.Length; index++)
{
char currentChar = input[index];
if (index > 0 && char.IsUpper(currentChar))
{
result[resultIndex++] = ' ';
}
result[resultIndex++] = currentChar;
}
return result[..resultIndex].ToString();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment