Вот еще более питонская версия ответа Марка Байера:
import re
def natural_sort_key(s, _nsre=re.compile('([0-9]+)')):
return [int(text) if text.isdigit() else text.lower()
for text in re.split(_nsre, s)]
Теперь эта функция может использоваться как ключ в любой функции, которая ее использует, например list.sort
, sorted
, max
и т. д.
В качестве лямбда:
lambda s: [int(t) if t.isdigit() else t.lower() for t in re.split('(\d+)', s)]
Я нашел решение. Я не использовал свойства maxlength и создал новую функцию в файле component.ts
здесь: HTML:
<textarea siInput [(ngModel)]="myTextarea" style="resize:none; white-space: both;" rows="20" (keyup)="onKeyAction()"(keydown)="onKeyAction()" id="textID" maxlength="{{maxTextAreaLength}}"></textarea>
, а вот funtion в компоненте:
this.maxTextLineLength: number = 50;
onKeyAction() {
if (this.myTextarea) {
var lines = this.myTextarea.split(/(\r\n|\n|\r)/gm);
for (var i = 0; i < lines.length; i++) {
if (lines[i].length >= this.maxTextLineLength) {
lines[i] = lines[i].substring(0, this.maxTextLineLength);
}
}
this.myTextarea = lines.join('');
}
}
Вот решение для управления в maxlength,
, которое вы должны передать так в теге textarea,
[maxLength]="textareaLength"
, вы также можете использовать это также,
[attr.maxlength]="maxLength"
вы можете установить это значение переменной в машинописном тексте,
Для получения дополнительной справки,
Angular2 maxLength для textarea как переменной
http://embed.plnkr.co/CkAbaQLQVndoC47OtQRF/
Надеюсь, это решит вашу проблему.