Пользовательская функция терминала для изменения регистра текста

Пользовательская функция терминала для изменения регистра текста

Я ищу пользовательскую функцию терминала change_case, которая будет работать следующим образом, чтобы помочь мне управлять заголовками на моем веб-сайте:

change_case [option] "string"

option:
    upper - STRING TO UPPERCASE
    lower - string to lowercase
    sentence - Uppercase first letter of every word, others to lowercase
    custom - String to Sentence Case except These Words if they appear as the 1st letter:
        [in,by,with,of,a,to,is,and,the]

Пример заголовка -Как сделать так, чтобы вместо автоматического входа в систему отображался экран входа в систему?

верхний:КАК СДЕЛАТЬ, ЧТОБЫ ПОЯВЛЯЛСЯ ЭКРАН ВХОДА В СИСТЕМУ, А НЕ АВТОМАТИЧЕСКИЙ ВХОД?

ниже:как сделать так, чтобы вместо автоматического входа в систему отображался экран входа в систему?

предложение:Как сделать так, чтобы вместо автоматического входа в систему отображался экран входа в систему?

обычай:Как сделать так, чтобы вместо автоматического входа в систему отображался экран входа в систему?

решение1

Это не так уж и сложно:

  1. Скопируйте приведенный ниже скрипт в пустой файл, сохраните его как change_case(без расширения) в ~/bin(возможно, вам придется создать каталог).Сделать скрипт исполняемым
  2. Возможно, вам придется выйти из системы и войти в нее, особенно если каталог еще не существует (или, в качестве альтернативы, выполнить: source ~/.profile)
  3. Откройте окно терминала и проверьте его, выполнив команду:

    change_case custom this is a test case to see if all in the script works
    

    выход:

    This is a Test Case to See If All in the Script Works
    

Я протестировал его со всеми вариантами из вашего вопроса (верхний, нижний, предложение, пользовательский) и все должно работать, как в вашем примере.

Сценарий

#!/usr/bin/env python3
import sys

string = sys.argv[2:]
opt = sys.argv[1]

excluded = ["in","by","with","of","a","to","is","and","the"]

if opt == "lower":
    print((" ").join(string).lower())
elif opt == "upper":
    print((" ").join(string).upper())
elif opt == "sentence":
    print((" ").join(string).title())
elif opt == "custom":
    line = []
    for s in string:
        s = s.title() if not s in excluded else s
        line.append(s)
    print((" ").join(line))

Связанный контент