Как перевести string в string массив при последующей возможности редактирования?

Надо убрать данную ошибку CS0019: C# operator '==' cannot be applied to operands of type 'char' and 'string':

static readonly string[] signs = new[] { "0", "1", ... };

static void Main()
{
    string word = ...;

    for (var i = 0; i < word.Length; i++)
        for (var j = 0; j < signs.Length; j++)
            if (word[i] == signs[i]) // <- ошибка
            {
                word[i] = '\0';

                break;
            }
}

Ответы (1 шт):

Автор решения: return

Решение

Про пустой char

char не может быть пустым

А как же '\0' (его использую я), или default/*(char)*/, или просто /*(char)*/0 (пустой имеется ввиду значение по умолчанию).

RemoveInvalidChars

static readonly char[] invalidChars = new[] { /*...*/ };

// `ReadOnlySpan<char>` - ссылка #1
// `StringBuilder` я не рекомендую; используйте `ValueStringBuilder` (ссылки #2,3)
void RemoveInvalidChars(ReadOnlySpan<char> buffer, StringBuilder builder)
{
    for (var i = 0; i < buffer.Length; i++)
    {
        var isValid = true;

        foreach (var invalidChar in invalidChars)
            if (buffer[i] == invalidChar[i])
            {
                isValid = false;

                break;
            }

        if (isValid) builder.Append(buffer[i]);
    }
}

RemoveInvalidSubstrings

static readonly string[] invalidSubtrings = new[] { /*...*/ };

void RemoveInvalidSubstirngs(ReadOnlySpan<char> buffer, StringBuilder builder)
{
    for (var i = 0; i < buffer.Length; i++)
    {
        var isValid = true;

        foreach (var invalidSubstring in invalidSubstrings)
            if (buffer.Length - i >= invalidSubstring.Length &&
                buffer.Slice(i, invalidSubstring.Length)
                    .Equals(invalidSubstring.AsSpan(), StringComparision.Ordinal))
            {
                isValid = false;

                break;
            }

        if (isValid) builder.Append(buffer[i]);
    }
}

Ссылки

  • #1 – Новинки C# 7.2: Span и Memory
  • #2 – Stackalloc: забытая команда C#
  • #3 – Span: новый тип данных .NET
→ Ссылка