【发布时间】:2021-08-16 13:33:18
【问题描述】:
我有一个包含颜色标签的字符串。
var myString = "My name is <color=#FF00EE>ABCDE</color> and I love <color=#FFEE00>music</color>";
我的字符串变成“我的名字是 ABCDE*(粉红色)*,我喜欢音乐*(黄色)*”
如果字符串达到最大长度但仍保留颜色标签,我想截断
var myTruncateString = "My name is <color=#FF00EE>ABCDE</color> and I love <color=#FFEE00>mu</color>";
我的字符串变成“我的名字是 ABCDE*(pink)* and I love mu*(yellow)*”
你有什么建议吗?
var stringWithoutFormat = String.Copy(myString);
stringWithoutFormat = Regex.Replace(stringWithoutFormat, "<color.*?>|</color>", "");
var maxLength = 20;
if (stringWithoutFormat.Length > maxLength)
{
// What should I do next?
}
【问题讨论】:
-
那么你到底想要什么?你只是想限制字符数吗?那么原因: int max = 300; var myTruncateString = mystring[..max];
-
@Foitn 我想截断我的字符串但仍保留颜色标签
-
没那么容易,有效!我会首先检查字符串长度。如果它太长,那么从末尾搜索任何
<color>标签。如果找到,则截断其内容或在需要时将其完全删除。如果字符串没有以颜色标签结束,那么检查它的结束位置,看看我们是否可以截断它后面的文本,或者我们是否还必须截断它的内容。 -
您可能必须解码 XML 结构,检查解码标签中值的总长度并在需要的地方截断(最终删除整个标签或其子标签)......顺便说一句,你想要什么获取整个“音乐”字是否超出最大长度?
-
“如果字符串达到最大长度但仍保留颜色标签,我想截断”最大长度也计入
标签?