Хотите посчитать символы в строке, исключая форматированное форматирование текста? (С #) - PullRequest
0 голосов
/ 09 января 2019

Платформа : Unity 2018.2.20f1 Язык : C # .Net 4.x

Сценарий

У меня есть строка, которую я применил бы к текстовой сетке, отображаемой в Unity. Этот конвейер рендеринга поддерживает редактирование Rich Text. http://digitalnativestudios.com/textmeshpro/docs/rich-text/

Запрос

Следовательно, когда я добавляю строку, я хотел бы знать количество символов, которое исключает символы, используемые для форматирования Rich Text.

Пример

string _value = "We are <b><i>definitely not</i></b> amused";
// Character count should be 29 instead of 43

Так, как лучше всего это реализовать? Есть ли в сети модуль / ресурсы, которые могли бы помочь мне в подсчете?

Спасибо, Karsnen

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Решение

Для разработчиков, не входящих в единство

Насколько я понимаю, вам придется использовать выражения Regex для ее решения. Что-то вроде @Wubber && @Yakov предложили. Другой ответ с предложением Вуббера

Для разработчиков Unity, использующих TMPro.TextMeshProUGUI

TMPro.TMP_InputField myInputField;
TMPro.TextMeshProUGUI InputTextBoxField;

private void onValueChangedInMyInputField(string _value)
{
  int _charCount = InputTextBoxField.GetParsedText().Length;
  int _inputFieldCount = myInputField.text.Length;
  // _charCount is the number excluding the rich text content 
  // _inputFieldCount is the number inclusive of the rich text content
}

Спасибо, что уделили время всем. Приветствия.

0 голосов
/ 09 января 2019

Вы можете установить способ замены блока форматирования.

string CountNumber = Regex.Replace(richtextbox, "<.*?>", String.Empty);
MessageBox.Show(CountNumber.Length);
...