我正在开发一个c#web应用程序,在一个部分中,我们在小方框上显示用户评论。似乎有一个人写了一个长串,导致盒子变大。
如何避免长字符合其容器大小?
例如,如果用户编写以下内容
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
我的盒子宽度较短
我应该让它适合。
答案 0 :(得分:7)
使用css属性word-wrap: break-word
。这将迫使长线缠绕到下一条线上。
答案 1 :(得分:4)
常见的做法是检查字符数,并用较短的字符串和省略号替换长字符串。
aaaaaa ......
然后,如果您愿意,请在翻转中显示全文。
< div title =“aaaaaa .... aaaa”> aaaaa ...< / div>
在代码中,您可以执行类似
的操作text = allText.SubString(Min(allText.Length,80))
并将其与其他答案中列出的CSS样式相结合。
答案 2 :(得分:3)
答案 3 :(得分:1)
这是C#中的解决方案。它溢出了唯一超过给定限制的单词,其他单词仍然照常使用。
/// <summary>
/// Word wraps the given text to fit within the specified width.
/// </summary>
/// <param name="text">Text to be word wrapped</param>
/// <param name="width">Width, in characters, to which the text
/// should be word wrapped</param>
/// <returns>The modified text</returns>
public static string WordWrap(string text, int width)
{
int pos, next;
StringBuilder sb = new StringBuilder();
// Lucidity check
if (width < 1)
return text;
// Parse each line of text
for (pos = 0; pos < text.Length; pos = next)
{
// Find end of line
int eol = text.IndexOf(Environment.NewLine, pos);
if (eol == -1)
next = eol = text.Length;
else
next = eol + Environment.NewLine.Length;
// Copy this line of text, breaking into smaller lines as needed
if (eol > pos)
{
do
{
int len = eol - pos;
if (len > width)
len = BreakLine(text, pos, width);
sb.Append(text, pos, len);
sb.Append(Environment.NewLine);
// Trim whitespace following break
pos += len;
while (pos < eol && Char.IsWhiteSpace(text[pos]))
pos++;
} while (eol > pos);
}
else sb.Append(Environment.NewLine); // Empty line
}
return sb.ToString();
}
/// <summary>
/// Locates position to break the given line so as to avoid
/// breaking words.
/// </summary>
/// <param name="text">String that contains line of text</param>
/// <param name="pos">Index where line of text starts</param>
/// <param name="max">Maximum line length</param>
/// <returns>The modified line length</returns>
private static int BreakLine(string text, int pos, int max)
{
// Find last whitespace in line
int i = max;
while (i >= 0 && !Char.IsWhiteSpace(text[pos + i]))
i--;
// If no whitespace found, break at maximum length
if (i < 0)
return max;
// Find start of whitespace
while (i >= 0 && Char.IsWhiteSpace(text[pos + i]))
i--;
// Return length of text before whitespace
return i + 1;
}
答案 4 :(得分:0)
您可能想查看soft hyphen。在大多数情况下,这是一个打破一条线的隐形字符。