theadmin Ответов: 1

Лучший способ использовать переключатель с IndexOf


Всем Привет,

Я ищу некоторую информацию об использовании оператора switch с некоторыми строками, я не знаю, возможно ли это или лучший способ, так как в данный момент я ищу некоторые советы. Я собираюсь опубликовать фрагмент, чтобы все поняли эту идею.

Спасибо за помощь.


string testing "This is a local state Florida";
string state = string.Empty;

switch(testing)
{
case "Louisiana":
if(testing.IndexOf("Louisiana") > -1)
 state = "Louisiana";
 break;

case "California":
if(testing.IndexOf("California") > -1)
 state = "California";
 break;

case "Florida";
if(testing.IndexOf("Florida") > -1)
 state = "Florida";
 break;

default:
  state = "";
}

Sergey Alexandrovich Kryukov

Вся часть switch-это большое злоупотребление, потому что она делает код не поддерживаемым. Жестко запрограммированный непосредственные константы здесь они не приемлемы. Вы должны иметь один источник каждой части данных. Проблема очень проста; вы делаете из этого... кто знает, что именно.
—СА

1 Ответов

Рейтинг:
10

F-ES Sitecore

Ваш код не будет работать, так как значение "тестирование" не удовлетворяет ни одному из ваших операторов case

string testing = "This is a local state Florida";

List<string> states = new List<string>{"Louisiana", "California", "Florida"};

string state = states.FirstOrDefault(s => testing.IndexOf(s) != -1);


Mario Z

Вы могли бы заменить IndexOf на Contains, это было бы более подходящим для этой задачи.
Кроме того по умолчанию строка имеет значение null и кажется что он хочет пустую строку в этом случае так что возможно вы могли бы использовать что то вроде этого:
string state = states.FirstOrDefault(s => testing.Contains(s)) ?? string.Empty;

F-ES Sitecore

Я согласен, я почти сделал это, но я не хотел отклоняться слишком далеко от того, что он первоначально просил :)

theadmin

Марио,

Еще раз спасибо, что помог мне с другими вещами. Я действительно пыхтел после того, как вы дали мне все эти примеры. Этот вопрос относится к тому же коду, и я пытаюсь найти производителей порошков. Я пытаюсь выяснить, как лучше всего найти эту информацию, так как там будет строка с информацией о производителе, содержащейся в строке, как только она будет извлечена из html.

Я использовал состояния в качестве примера, так как это довольно близко к тому, что я буду делать, когда получу строку. Я обращаюсь к вам, ребята, поскольку я не программист (только в свободное время) и ищу руководства о том, как на самом деле выполнить поставленную задачу. Это не обязательно должен быть переключатель, я просто подумал о переключателе, так как это казалось таким простым. Просто ищу некоторые рекомендации по кодированию лучше от профессионалов.


Спасибо, ребята...

Maciej Los

+5!

Matt T Heffron

+5

theadmin

Есть ли способ сделать это дело нечувствительным? Я заметил, что если строка находится в нижнем регистре, то мое возвращаемое значение равно null.

F-ES Sitecore

http://stackoverflow.com/questions/444798/case-insensitive-containsstring

theadmin

- Спасибо, сэр.