Метод StartsWith будет быстрее, так как нет необходимости тратить время на интерпретацию регулярного выражения, но вот как вы это делаете:
if (Regex.IsMatch(theString, "^(mailto|ftp|joe):")) ...
^
соответствует началу строки. Вы можете поместить любые протоколы в скобки, разделенные |
символами.
редактирование:
Другой подход, который намного быстрее, - это получить начало строки и использовать ее в переключателе. Коммутатор устанавливает хеш-таблицу со строками, поэтому это быстрее, чем сравнивать все строки:
int index = theString.IndexOf(':');
if (index != -1) {
switch (theString.Substring(0, index)) {
case "mailto":
case "ftp":
case "joe":
// do something
break;
}
}