Skip to content

Commit

Permalink
Import StringSplitExtensions (#226)
Browse files Browse the repository at this point in the history
  • Loading branch information
mburumaxwell authored Mar 19, 2024
1 parent 94f920c commit a43c1f2
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public enum StringProtectionPosition
End,
}

/// <summary>Extension methods for <see cref="string"/>.</summary>
/// <summary>Extension methods for <see cref="string"/> for protection.</summary>
public static partial class StringProtectionExtensions
{
/// <summary>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
using System.Text.RegularExpressions;

namespace System;

/// <summary>Extension methods for <see cref="string"/> for splitting.</summary>
public static partial class StringSplitExtensions
{
/// <summary>
/// Split a string in Pascal casing into multiple words by adding the specified <paramref name="separator"/>.
/// </summary>
/// <param name="source"></param>
/// <param name="separator"></param>
/// <returns></returns>
public static string PascalSplit(this string source, string separator = " ")
{
ArgumentNullException.ThrowIfNull(source);

return GetPascalSplitFormat().Replace(source, separator);
}

[GeneratedRegex(@"(?<=[A-Za-z])(?=[A-Z][a-z])|(?<=[a-z0-9])(?=[0-9]?[A-Z])")]
private static partial Regex GetPascalSplitFormat();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
namespace Tingle.Extensions.Modeling.Tests;

public class StringSplitExtensionsTests
{
[Theory]
[InlineData("HomeAndAway", " ", "Home And Away")]
[InlineData("HomeAndAway", "_", "Home_And_Away")]
[InlineData("Chickensoup", " ", "Chickensoup")]
public void PascalSplit_works(string original, string separator, string expected)
{
var actual = original.PascalSplit(separator);
Assert.Equal(expected, actual);
}
}

0 comments on commit a43c1f2

Please sign in to comment.