Discord.Net:如何在带文本格式的嵌入消息(Embed)中实现换行?
如何在Discord嵌入消息(Embed)中将内容拆分为多行显示?
我一直在寻找该问题的解决方案,但始终未能找到答案。我想要实现的效果如下:目前我发送嵌入消息(Embed)回复时,内容显示为例如‘football,baseball’这样的单行形式;而我期望的是将内容分为两行显示,即第一行显示‘football’,第二行显示‘baseball’。请问有没有人知道如何通过代码实现这一效果?提前感谢各位的帮助。
当前使用的代码:
var value = ""; int price = 0; foreach (var Item in content) { value += Item.Item1 + ": " + Item.Item2.ToString(); price += Item.Item2; } return new EmbedFieldBuilder() { Name = category + " - " + price, Value = value };
嘿,这个问题很好解决!Discord的嵌入消息支持用**换行符(\n)**来实现文本换行,你现在的代码只是把所有内容拼接成了一个没有分隔的字符串,所以才会显示在同一行。
这里给你两种修改方案:
方案1:直接添加换行符
在每次拼接内容后加上\n,最后可以去掉末尾多余的换行:
var value = ""; int price = 0; foreach (var Item in content) { // 每个条目后添加换行符,实现多行显示 value += Item.Item1 + ": " + Item.Item2.ToString() + "\n"; price += Item.Item2; } // 移除最后多余的换行,避免字段末尾出现空行 value = value.TrimEnd('\n'); return new EmbedFieldBuilder() { Name = category + " - " + price, Value = value };
方案2:使用StringBuilder更高效(推荐)
如果你的条目数量较多,用StringBuilder做字符串拼接性能会更好,它还自带AppendLine方法直接添加换行:
var valueBuilder = new StringBuilder(); int price = 0; foreach (var Item in content) { // AppendLine会自动在末尾添加换行符 valueBuilder.AppendLine($"{Item.Item1}: {Item.Item2}"); price += Item.Item2; } // 同样移除末尾多余的换行 return new EmbedFieldBuilder() { Name = $"{category} - {price}", Value = valueBuilder.ToString().TrimEnd('\n') };
这样修改后,每个条目就会单独显示在一行啦~ 如果还有问题可以随时问!
内容的提问来源于stack exchange,提问作者Juan Ming Lao
相关产品推荐
相关产品推荐

