Не существует стандартной библиотечной функции, которая бы делала это за вас, вам нужно реализовать ее самостоятельно. Вот, пожалуй, самый простой способ сделать это:
var result = alphabet.Substring(1) + alphabet[0];
Это выполняет два выделения строк, одно для Substring
и одно для окончательного результата. Если ваши строки невелики и это не самый популярный путь в вашем коде, этого будет достаточно. Если вам нужна максимальная эффективность, используйте новую перегрузку string.Create
из. NET Core 3.0:
var result = string.Create(alphabet.Length, alphabet, (span, source) =>
{
for (var i = 1; i < source.Length; ++i)
{
span[i - 1] = source[i];
}
span[source.Length - 1] = source[0];
});
String.Create в основном принимает некоторое состояние в качестве входного, а затем рецепт о том, как заполнить Span<char>
новой строки, используя это состояние. В этом случае состояние является исходной alphabet
строкой, и рецепт «перебирает source
, пропуская свою первую букву и копируя ее в новую строку, а затем добавляет первую букву source
в конце».
Обратите внимание, что второе решение применимо, только если вы создаете много таких вращений. Однострочник гораздо проще понять.