반응형
BBCode
단순하게 BBCode 기능을 비활성화할 수 있지만(supportEncoding = false), 반드시 이용은 하나 유저 입력을 막고 싶은 경우가 있습니다. 정규식과 string의 Replace를 적절히 이용하면 쉽게 제거할 수 있습니다.
스크립트
public static class Utils
{
public static string RemoveBBCode(string input)
{
string output = input;
// Remove [b], [i], [u], [s], [sub], [sup] tags
output = Regex.Replace(output, @"\[(b|i|u|s|sub|sup)\]", "");
// Remove [url=...] tags with variable-length URLs
output = Regex.Replace(output, @"\[url=.+?\]", "");
// Remove [url] tags
output = output.Replace("[url]", "");
// Remove [00000000] ~ [FFFFFFFF] color tags
output = Regex.Replace(output, @"\[[A-Fa-f0-9]{6,8}\]", "");
// Remove [-] tags
output = output.Replace("[-]", "");
return output;
}
}
예제
private static void Main(params string[] args)
{
string text = "[FF00FF]color[-] [b]Bold[-]"
label.text = Utils.RemoveBBCode(text);
// Result
// text = "color Bold"
}
마무리
BBCode에서 사용되는 태그의 범위는 넓지 않으므로, 위와 같이 몇 개의 태그만 교체하는 방식으로 진행하면 됩니다. ChatGPT를 통해서 정규식 검증도 받아내고, 사용되지 않는 HTML 태그까지 알려줘서 필요한 내용에 맞게 고쳤더니 도움이 되었네요.
반응형
'Utils' 카테고리의 다른 글
Unity, 박스 콜라이더 기즈모 (0) | 2023.05.11 |
---|---|
Unity, Transform 인스펙터 커스텀 (0) | 2023.05.09 |
NGUI, SafeArea를 통한 아이폰 노치 영역 대응하기 (0) | 2023.03.30 |
Unity, 작업 중 Editor가 점점 느려지는 경우 (3) | 2023.03.18 |
C#, 고정된 해쉬 값 가져오기 (0) | 2023.03.18 |
댓글