using System;
namespace Jellyfin.Extensions
{
///
/// Provides extensions methods for .
///
public static class StringExtensions
{
///
/// Counts the number of occurrences of [needle] in the string.
///
/// The haystack to search in.
/// The character to search for.
/// The number of occurrences of the [needle] character.
public static int Count(this ReadOnlySpan value, char needle)
{
var count = 0;
var length = value.Length;
for (var i = 0; i < length; i++)
{
if (value[i] == needle)
{
count++;
}
}
return count;
}
///
/// Returns the part on the left of the needle.
///
/// The string to seek.
/// The needle to find.
/// The part left of the .
public static ReadOnlySpan LeftPart(this ReadOnlySpan haystack, char needle)
{
var pos = haystack.IndexOf(needle);
return pos == -1 ? haystack : haystack[..pos];
}
///
/// Returns the part on the right of the needle.
///
/// The string to seek.
/// The needle to find.
/// The part right of the .
public static ReadOnlySpan RightPart(this ReadOnlySpan haystack, char needle)
{
var pos = haystack.LastIndexOf(needle);
if (pos == -1)
{
return haystack;
}
if (pos == haystack.Length - 1)
{
return ReadOnlySpan.Empty;
}
return haystack[(pos + 1)..];
}
}
}