Home > database >  How can I get text value of TMPro Text without markup tags in Unity?
How can I get text value of TMPro Text without markup tags in Unity?

Time:09-16

I am trying to get text value in TMPro Text component without markup tags but haven't found any solutions.

Say, <b><color=red>Hello </color><b> world is the value in TMPro Text, and I just want Hello world in c# script.

Bear in mind that tag <b> and color will change, so I would love to remove tags dynamically, meaning I would like not to replacing each tag by text.replace("<b>", "") kind of things.

Does anyone know how to do it?

CodePudding user response:

I dont know about the option of using HTML on tmp but you can attach the text to your script by create a new variable like that:

[SerializeField] TMP_Text textVar;

then you can drag you tmp game object to the component that include this script

and the you can change the text like that:

textVar.text = "what ever";

or get text like that:

string textString = textVar.text;

for the color you can use

Color color = textVar.color;

CodePudding user response:

You can use TMP_Text.GetParsedText () to get the text after it has been parsed and rich text tags removed.

Alternatively you can also use regular expressions to search a string for rich text tags, and remove them while preserving the rest of the string.

using System.Text.RegularExpressions;
public static string GetString (string str)
{
    Regex rich = new Regex (@"<[^>]*>");

    if (rich.IsMatch (str))
    {
        str = rich.Replace (str, string.Empty);
    }

    return str;
}
  • Related