Как я заменяю пробелы подчеркиванием и наоборот?

Всего за шесть кликов ReSharper упростит ваш код в одну строку.

Первые три щелчка превратят

 if (isWithUmbrella)
                    return true;
                else
                    return false;

в

return isWithUmbrella;

Следующие три щелчка изменят

    if (isRaining)
    {
        return isWithUmbrella;
    }
    else
        return true;

на

    return !isRaining || isWithUmbrella;

и вуаля, вы сделали.

184
задан Lucas 17 June 2009 в 03:41
поделиться

9 ответов

Регулярные выражения не нужны. Python имеет встроенный строковый метод, который делает то, что вам нужно:

mystring.replace(" ", "_")
313
ответ дан 23 November 2019 в 05:55
поделиться

Заменять пробелы можно, но я мог бы предложить пойти немного дальше и обработать другие враждебные 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!"))
71
ответ дан 23 November 2019 в 05:55
поделиться

использовать метод замены строки:

"это должно быть подключено" .replace ("", "_")

"this_should_be_disconnected" .replace ("_", "")

10
ответ дан 23 November 2019 в 05:55
поделиться

Django имеет функцию 'slugify', которая делает это, а также другие оптимизации, оптимизированные для URL. Он спрятан в модуле defaultfilters.

>>> from django.template.defaultfilters import slugify
>>> slugify("This should be connected")

this-should-be-connected

Это не совсем тот результат, который вы просили, но IMO его лучше использовать в URL-адресах.

39
ответ дан 23 November 2019 в 05:55
поделиться

Использование модуля 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 , как предлагали другие.

17
ответ дан 23 November 2019 в 05:55
поделиться

Я использую следующий фрагмент кода для своих дружественных 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

Он также отлично работает с символами Юникода.

5
ответ дан 23 November 2019 в 05:55
поделиться

Python имеет встроенный метод для строк, называемый replace, который используется следующим образом:

string.replace(old, new)

Итак, вы должны использовать:

string.replace(" ", "_")

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

4
ответ дан 23 November 2019 в 05:55
поделиться
perl -e 'map { $on=$_; s/ /_/; rename($on, $_) or warn $!; } <*>;'

Сопоставить и заменить пробел> подчеркивание всех файлов в текущем каталоге

-3
ответ дан 23 November 2019 в 05:55
поделиться

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"
2
ответ дан 23 November 2019 в 05:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: