Если Вам только нужно симпатичное расположение с отступом, не представляя новых разрывов строки, можно подать заявку эти indent-region
команда ко всему буферу с этими нажатиями клавиш:
C-x h
C-M-\
, Если также необходимо представить разрывы строки, так, чтобы открывающие и закрывающие тэги были на отдельных строках, Вы могли использовать следующую очень хорошую функцию elisp, записанную Benjamin Ferrari . Я нашел его на его блоге, и надеются, что для меня нормально воспроизводить его здесь:
(defun bf-pretty-print-xml-region (begin end)
"Pretty format XML markup in region. You need to have nxml-mode
http://www.emacswiki.org/cgi-bin/wiki/NxmlMode installed to do
this. The function inserts linebreaks to separate tags that have
nothing but whitespace between them. It then indents the markup
by using nxml's indentation rules."
(interactive "r")
(save-excursion
(nxml-mode)
(goto-char begin)
(while (search-forward-regexp "\>[ \\t]*\<" nil t)
(backward-char) (insert "\n"))
(indent-region begin end))
(message "Ah, much better!"))
Это не полагается на внешний инструмент как Опрятный.
Нет. Я бы обернул его в какой-нибудь метод, чтобы шум не попадал в основной поток:
bool IsValidDate(string value)
{
DateTime result;
return DateTime.TryParse(value, out result); //result is stored, but you only care about the return value of TryParse()
}
TryParse
- лучший вариант. Это просто бесполезная переменная. Другие варианты включают использование Convert.ToDateTime ()
в блоке try-catch. Но опять же, это было бы неэффективно, потому что блоки try-catch должны быть тяжелыми. Следующий вариант - регулярное выражение. Это лучшее решение. Я думаю, это дает вам результат мгновенно, чем по сравнению с другими.
Вы можете очень хорошо обернуть метод, как сказал Ким Грасман ...
Нет. Вы не можете избавиться от переменной, но вы также не должны получать предупреждение компилятора.
Передача переменной как из
означает «использование» переменной. Из-за этого компилятор не выдаст предупреждение.
Я не предлагаю вам делать это, но вы можете использовать один вспомогательный класс, чтобы упростить эту задачу для всех параметры out:
public static class OutHelper<T>
{
[ThreadStatic]
public static T Ignored;
}
Затем вы можете вызвать:
if (DateTime.TryParse(text, out OutHelper<DateTime>.Ignored))
Это ужасно, использует общедоступное изменяемое поле, и если ваше приложение также выполняется с некоторым вредоносным кодом, оно дает этому коду доступ к последнему проанализированному значению ... но должно работать :)
Если вы используете .NET 3 и выше, вы всегда можете создать метод расширения?
public static bool IsValidDate(this string value)
{
DateTime date = DateTime.Null;
return DateTime.TryParse(value, out date);
}
[Отредактировано для переименования метода в более подходящее]