Как использовать переменную для выбора в switch-case в зависимости от динамического текста?

Каковы варианты обработки случаев, когда урл содержит информацию о языке пользователя, например: `/english/some-page` или `/russian/some-page`? При использовании указанного кода для извлечения пути из запроса и проверки языка получается ошибка "a constant value of type string is expected".
  • 15 марта 2024 г. 11:59
Ответы на вопрос 3
Для использования переменной в конструкции switch-case в зависимости от динамического текста, можно использовать следующий подход:

```java
String language = "english"; // Динамический текст

switch(language) {
    case "english":
        // Код для обработки случая на английском языке
        break;
    case "russian":
        // Код для обработки случая на русском языке
        break;
    default:
        // Код для обработки других случаев
}
```

Относительно обработки случаев, когда URL содержит информацию о языке пользователя, вы можете предварительно извлечь информацию о языке из URL и затем использовать ее для выбора соответствующего случая в switch-case. Например:

```java
String url = "/english/some-page"; // Получение URL из запроса
String language = url.split("/")[1]; // Извлечение языка из URL

switch(language) {
    case "english":
        // Код для обработки случая на английском языке
        break;
    case "russian":
        // Код для обработки случая на русском языке
        break;
    default:
        // Код для обработки других случаев
}
```

Относительно ошибки "a constant value of type string is expected" - это означает, что в конструкции switch-case ожидается константное значение типа string, и переменные не могут использоваться напрямую. Поэтому необходимо предварительно извлечь значение, хранить его в переменной и затем использовать в switch-case.
Switch работает только со статическими данными, а не выражениями
switch (path)
{
    case not null when string.Equals($"{context.Culture}/some-page", path):
        break;
}
Похожие вопросы