Изменение одного символа в строке в Python

Это потому, что ваши сеттеры для Nome, Email, Denucia называют себя бесконечным процессом. Вы можете решить это, используя вспомогательное поле для каждого свойства.

   private string _nome ;

   public string Nome
    {
        get => _nome ?? "Nome não informado.";
        private set => _nome = value ?? "Nome não informado.";
    }

    private string _email; 

    public string Email
    {
        get => _email?? "Email não informado.";
        private set => _email= value ?? "Email não informado.";
    }

    private string _denucia;

    [Required(ErrorMessage = "A denuncia não possui o texto obrigatório do seu conteúdo. (Corpo da Mensagem)")]
    public string Denuncia
    {
        get => _denucia?? "O texto da denuncia não foi encontrado.";
        private set => _denucia= value ?? throw new ArgumentNullException("O campo denúncia é obrigatório.");
    }
341
задан codeforester 16 August 2019 в 22:08
поделиться

5 ответов

Не изменяйте строки.

Работайте с ними как с списками; превращайте их в строки только при необходимости.

>>> s = list("Hello zorld")
>>> s
['H', 'e', 'l', 'l', 'o', ' ', 'z', 'o', 'r', 'l', 'd']
>>> s[6] = 'W'
>>> s
['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
>>> "".join(s)
'Hello World'

Строки Python неизменяемы (т. е. не могут быть изменены). На то есть множество причин. Используйте списки, пока у вас не останется выбора, только затем превратите их в строки.

На то есть множество причин. Используйте списки, пока у вас не останется выбора, только затем превратите их в строки.

На то есть множество причин. Используйте списки, пока у вас не останется выбора, только затем превратите их в строки.

481
ответ дан 23 November 2019 в 00:35
поделиться

если Ваш мир составляет 100% ascii/utf-8 (много вариантов использования помещается в то поле):

b = bytearray(s, 'utf-8')
# process - e.g., lowercasing: 
#    b[0] = b[i+1] - 32
s = str(b, 'utf-8')

Python 3.7.3

0
ответ дан 23 November 2019 в 00:35
поделиться
new = text[:1] + 'Z' + text[2:]
123
ответ дан 23 November 2019 в 00:35
поделиться

Строки Python неизменяемы, их можно изменить, сделав копию.
Самый простой способ сделать то, что вы хотите, это, вероятно.

text = "Z" + text[1:]

Текст [1:] возвращает строку в тексте от позиции 1 до конца, позиции отсчитываются от 0, поэтому вторым символом является '1'.

edit: Вы можете использовать ту же технику нарезки строки для любой части строки

text = text[:1] + "Z" + text[2:]

Или, если буква появляется только один раз, вы можете использовать предложенную технику поиска и замены ниже

33
ответ дан 23 November 2019 в 00:35
поделиться

Как говорили другие, обычно строки Python должны быть неизменяемыми.

Однако, если вы используете CPython, реализацию на python.org, можно использовать ctypes для изменить структуру строки в памяти.

Вот пример, в котором я использую технику для очистки строки.

Отметить данные как конфиденциальные в python

Я упоминаю это для полноты, и это должно быть ваше в крайнем случае, поскольку это хакерство.

4
ответ дан 23 November 2019 в 00:35
поделиться
Другие вопросы по тегам:

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