はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Unity】テキストからリッチテキストのタグ(HTMLタグ)を削除する方法

はじめに

今回はテキストからリッチタグ(HTMLタグ)を削除する方法についての記事になります!

特にリッチテキストのタグを含んだ文字列の文字数を取得しようと思ったときは、タグの文字数もカウントしてしまいます。
www.hanachiru-blog.com

これはノベルゲームなどの文字の表示に影響を及ぼしてしまうこともあるかもしれません。

それらの対策として、C#の正規表現を用いたタグの削除方法を紹介をしたいと思います。

正規表現とは?

あまり深堀はしませんが、正規表現とは文字列を検索するために使用するものです。

検索したい文字列を表現するためのお作法がいくつかあるのですが、興味があるかたはこちらのサイトが丁寧に書かれていて分かりやすかったので見てみるといいかもしれません。
dobon.net

ただ方法だけが知りたいかたはとりあえずそういうものを使っているんだという認識だけでOKだと思います。

やり方

using UnityEngine;
using System.Text.RegularExpressions;       //これでRegex.Replaceメソッドが使えるようになる
public class TestDeleteTag : MonoBehaviour
{

    private const string TEXT = "<color=red>ツイッター</color>を是非<size=20>フォロー</size>してね。";

    void Start()
    {
        //<color=red>ツイッター</color>を是非<size=12>フォロー</size>してね。
        Debug.Log(TEXT);

        //<〇〇>または</〇〇>を削除する
        string text = Regex.Replace(TEXT, "<[^>]*?>", string.Empty);

        //ツイッターを是非フォローしてね。
        Debug.Log(text);
    }
}

ここでの[^>]>以外の1文字*?直前の文字を0回以上繰り返しを表しています。

f:id:hanaaaaaachiru:20190609185053p:plain

さいごに

<で始まり、>で終わるものなら全て"""に置換してくれるので、タグっぽいものなら全部削除してくれます。

是非うまく活用してみてください。