Эта версия старается не создавать подстроку и не использует регулярные выражения (здесь будут работать некоторые ответы regex; другие повреждаются):
String.prototype.endsWith = function(str)
{
var lastIndex = this.lastIndexOf(str);
return (lastIndex !== -1) && (lastIndex + str.length === this.length);
}
, Если бы производительность важна для Вас, это стоило бы протестировать, быстрее ли lastIndexOf
на самом деле, чем создание подстроки или нет. (Это может зависеть от механизма JS, который Вы используете...), Это может быть быстрее в случае соответствия, и когда строка является маленькой - но когда строка огромна, это должно оглянуться назад через все это даже при том, что мы действительно не заботимся: (
Для проверки отдельного символа, нахождение длины и затем использование charAt
являются, вероятно, лучшим способом.
Да. Используйте плагин Smart Tabs .
Этот сценарий позволяет вам использовать ваши обычные настройки табуляции для начала строки и расширять табуляции как пробелы в любом другом месте. Это эффективно отличает «отступ» от «выравнивания».
Использует настройки вкладки редактора для вставки табуляции в начало строки (перед первым непробельным символом) и вставляет пробелы в противном случае.
Использует настройки вкладки редактора для удаления вкладок или «развернутых» вкладок ala smarttab
Чтобы Vim выровнял аргументы функции, добавьте
set cindent
set cinoptions=(0,u0,U0
в .vimrc
. Плагин будет кодировать пробелы как таковые:
int f(int x,
......int y) {
--->return g(x,
--->.........y);
}
Это делает выравнивание « x
» и « y
» независимо от размера табуляции ( tabstop
) .
Попробуйте что-то вроде этого:
function! TabMaybeIndent()
if strpart(getline('.'), 0, col('.') - 1) =~ '^\s*$'
return "\<Tab>"
else
return " "
endif
endfunction
set noexpandtab
imap <Tab> <C-r>=TabMaybeIndent()<CR>