换行字符串

时间:2013-08-03 06:07:05

标签: javascript jquery css

我有一个从github api模块发回的字符串,其格式如下:

Added debug mode for developers

Simply add the class DEBUG to the body and you'll notice little boxes
scattered throughout your site attached to each grid item.

我想知道是否有一个css选项来清除这些行,因为浏览器会像这样读取上述内容:

Added debug mode for developers Simply add the class DEBUG to the body and you'll notice little boxes
scattered throughout your site attached to each grid item.

我真的不想用javacsript拆分字符串,但如果我必须,我想我会:)

我已经尝试了word-break:break-word;但是这只是为没有空格的更长字符串分割线条。 我也试过white-space: nowrap;然而这实际上并没有包装。

如果我控制台记录数据,chrome在“开发者”这个词之后有两个个字符,这是导致换行的原因,这些可以通过javascript选择吗?

任何帮助都会很棒!

2 个答案:

答案 0 :(得分:5)

你的问题有点不清楚,但我假设你想保留字符串中包含的换行符 - 而不是浏览器默认完全忽略它们。

您需要pre属性的white-space选项之一。

/* Display text exactly as entered */
white-space: pre;

/* Display as entered, plus extra linebreaks as needed for long lines */
white-space: pre-wrap;

/* Display newlines as entered, plus extra linebreaks as needed for long lines */
white-space: pre-line;

关于差异的一些注释:

  1. pre相当于将整个内容包装在<pre>标记中。

  2. prepre-wrap之间的区别在于是否会根据需要为长行添加额外的换行符。

  3. pre-wrappre-line之间的区别在于是保留所有空格(包括空格)还是仅保留换行符。

  4. pre-line等同于用<br>标记替换所有换行符。

  5. 您可以在此处查看不同风格的比较:http://jsfiddle.net/Gcexh/


    您遇到的另一个问题是,当您可能不一定要在那里进行换行时,您在输入的最后两行之间有换行符。

    您可以通过删除任何单个换行符来解决这个问题,并且只保留双重换行符,例如分隔前两行的换行符。

    理想情况下,这可以在服务器端完成,但也可以在这样的javascript中完成:
    (感谢@JanDvorak):

    text = text.replace(/(\n\s*\n)|\n/g, "$1 ")
    

答案 1 :(得分:0)

我认为没有办法用css做到这一点。 javascript方式:

var myStr = "Your multiline\n\nstring...";
for (;;)
{
     if (myStr.indexOf("\n") != -1)
          myStr = myStr.replace("\n", " ");
     else
          break;
}