如何包装一个很长的词

时间:2010-02-12 17:51:12

标签: c# css

我正在开发一个c#web应用程序,在一个部分中,我们在小方框上显示用户评论。似乎有一个人写了一个长串,导致盒子变大。

如何避免长字符合其容器大小?

例如,如果用户编写以下内容

  

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

我的盒子宽度较短

我应该让它适合。

5 个答案:

答案 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)

我喜欢用

overflow:hidden;

这些往往是异常值,通常都是错误。

CSS overflow Property

答案 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。在大多数情况下,这是一个打破一条线的隐形字符。