/// <summary>
/// 用于匹配标点符号(正则表达式)
/// </summary>
private readonly string strRegex = @"(\!|\?|\,|\。|\《|\》|\(|\)|\(|\)|\:|\“|\‘|\、|\;|\+|\-|\·|\#|\¥|\;|\”|\【|\】|\——)";
/// <summary>
/// 首行标点符合(正则表达式)
/// </summary>
private readonly string strRegex1 = @"(\!|\?|\,|\。|\《|\》|\)|\(|\)|\:|\“|\‘|\、|\;|\+|\-|\·|\#|\¥|\;|\”|\【|\】|\——|\<|\>)";
/// <summary>
/// 用于存储text组件中的内容
/// </summary>
private System.Text.StringBuilder MExplainText = null;
/// <summary>
/// 用于存储text生成器中的内容
/// </summary>
private IList<UILineInfo> MExpalinTextLine;
IEnumerator MClearUpExplainMode(Text _component, string _text)
{
_component.text = _text;
while (true)
{
yield return new WaitForSeconds(0.02f);
MExpalinTextLine = _component.cachedTextGenerator.lines;
MExplainText = new System.Text.StringBuilder(_component.text);
for (int i = 1; i < MExpalinTextLine.Count; i++)
{
bool isMark = Regex.IsMatch(_component.text[MExpalinTextLine[i].startCharIdx].ToString(), strRegex1);
if (isMark)
{
if (_component.text[MExpalinTextLine[i].startCharIdx - 1].ToString() == "\n")
{
MExplainText.Remove(MExpalinTextLine[i].startCharIdx - 1, 1);
MExplainText.Insert(MExpalinTextLine[i].startCharIdx - 2, '\n');
}
else
{
MExplainText.Insert(MExpalinTextLine[i].startCharIdx - 1, '\n');
}
StartCoroutine(MClearUpExplainMode(_component, MExplainText.ToString()));
break;
}
}
break;
}
}
【Unity】Text行首标点符号处理
最新推荐文章于 2023-05-13 13:44:43 发布