Всего за шесть кликов ReSharper упростит ваш код в одну строку.
Первые три щелчка превратят
if (isWithUmbrella)
return true;
else
return false;
в
return isWithUmbrella;
Следующие три щелчка изменят
if (isRaining)
{
return isWithUmbrella;
}
else
return true;
на
return !isRaining || isWithUmbrella;
и вуаля, вы сделали.
Регулярные выражения не нужны. Python имеет встроенный строковый метод, который делает то, что вам нужно:
mystring.replace(" ", "_")
Заменять пробелы можно, но я мог бы предложить пойти немного дальше и обработать другие враждебные URL-адреса символы, такие как вопросительные знаки, апострофы, восклицательные знаки и т. Д.
Также обратите внимание, что общий консенсус среди экспертов по SEO тире предпочтительнее подчеркивания в URL-адресах.
import re
def urlify(s):
# Remove all non-word characters (everything except numbers and letters)
s = re.sub(r"[^\w\s]", '', s)
# Replace all runs of whitespace with a single dash
s = re.sub(r"\s+", '-', s)
return s
# Prints: I-cant-get-no-satisfaction"
print(urlify("I can't get no satisfaction!"))
использовать метод замены строки:
"это должно быть подключено" .replace ("", "_")
"this_should_be_disconnected" .replace ("_", "")
Django имеет функцию 'slugify', которая делает это, а также другие оптимизации, оптимизированные для URL. Он спрятан в модуле defaultfilters.
>>> from django.template.defaultfilters import slugify
>>> slugify("This should be connected")
this-should-be-connected
Это не совсем тот результат, который вы просили, но IMO его лучше использовать в URL-адресах.
Использование модуля re
:
import re
re.sub('\s+', '_', "This should be connected") # This_should_be_connected
re.sub('\s+', '_', 'And so\tshould this') # And_so_should_this
Если у вас нет нескольких пробелов или других возможных пробелов, как указано выше, вы можете просто использовать string.replace
, как предлагали другие.
Я использую следующий фрагмент кода для своих дружественных URL:
from unicodedata import normalize
from re import sub
def slugify(title):
name = normalize('NFKD', title).encode('ascii', 'ignore').replace(' ', '-').lower()
#remove `other` characters
name = sub('[^a-zA-Z0-9_-]', '', name)
#nomalize dashes
name = sub('-+', '-', name)
return name
Он также отлично работает с символами Юникода.
Python имеет встроенный метод для строк, называемый replace, который используется следующим образом:
string.replace(old, new)
Итак, вы должны использовать:
string.replace(" ", "_")
У меня была эта проблема некоторое время назад, и я написал код для замены символы в строке. Я должен начать не забывать проверять документацию Python, потому что в них есть встроенные функции для всего.
perl -e 'map { $on=$_; s/ /_/; rename($on, $_) or warn $!; } <*>;'
Сопоставить и заменить пробел> подчеркивание всех файлов в текущем каталоге
OP использует python, но в javascript (следует быть осторожным, так как синтаксис похож.
// only replaces the first instance of ' ' with '_'
"one two three".replace(' ', '_');
=> "one_two three"
// replaces all instances of ' ' with '_'
"one two three".replace(/\s/g, '_');
=> "one_two_three"