本帖最后由 mengdiQian 于 2010-04-14 15:33:50 编辑

解决方案 »

  1.   


    function f(str){
        str = str.replace(/\r\n/igm, '<br/>');
        str = str.replace(/  /igm, '&nbsp;&nbsp;');
        return str;
    }取出来后再将回车替换为"<br/>",然后再输出
      

  2.   

    字符需要转义:private static Regex regEscape = new Regex(@"[\""\n\r\t\b\\]", RegexOptions.Compiled);//\f\u0085\u0085\u2028\u2029
            /// <summary>
            /// 过滤转义字符
            /// </summary>
            /// <param name="value"></param>
            /// <returns></returns>
            public static string ToString(string value)
            {
                return regEscape.Replace(value, delegate(Match m)
                {
                    return "\\"+m.Value;
                });
            }
      

  3.   

    额~我用的是thinkphp框架,
    JavaScript,没有C#。取出来是{$vo.txt},其中包括换行符了,
    相当于{$vo.txt}='gggg
                    ggggggg
                    gg';
    在js里就等于在第一行就结束了,怎么办呀
      

  4.   

    把大小括号转换测试下,&lt;br&gt;
      

  5.   

    把f方法里改成
    str = str.replace(/\r\n/ig, '&lt;br&gt;');
    吗?还是不行啊
      

  6.   

    prototype 是这样写的function f(str){
       var div = document.createElement('div');
       div.appendChild(document.createTextNode(this));
       return div.innerHTML;
    }
      

  7.   

    我估计字符窜结果不是换行符应该是别的符号,如果是换行符是输出到HTML后应该都是连载一起的字符窜,从数据库中读取1个短的字符串,然后测试每1个字符的代码,看看具体是什么字符
      

  8.   

    = =! 你不会是说 你后台没加转码吧。$vo.txt 传到页面上的时候应该转一下 主要去掉 引号什么的你应该在后台就把 \n 替换成 \\n 才对啊。
    比如你的后台字符串是gggg
    ggggggg
    gg
    也就是 "gggg\nggggggg\ngg\n"输出到页面应该是 "gggg\\nggggggg\\ngg\\n"
    也就是 $vo.txt 外面应该再套一个你的转码方法(看起来你是PHP)大概方法是这样的  遍历字符串字符 遇到字符 \n 替换成 \\n
      

  9.   

    我用的是thinkphp框架,
    不过这段代码是用JavaScript编的,我是直接在文本域里写入要存入数据库的文字(其中当然包括回车),直接提交,字段就是txt。
    然后把数据库中的txt字段中的内容提取出来,用f(str)方法处理下再输出来。
    而再html模板中就是用{$vo.txt}来表示的。
      

  10.   

    如果你不能在后台数据库进行操作的话(这种方式应该最简便,在数据库之前应该将文本做一定处理),
    还有一种在前台实现的方法:先在前台模板中建一个隐藏图层
    <div id="tmpWrap" style="display:none">{$vo.txt}</div>这样输出后,你的框架已经将内容输出到这个DIV里,
    之后,你就可以用JS获得已经格式化过的内容:
    var youWantVoTxt = document.getElementById("tmpWrap").innerHTML
      

  11.   

    前台是要把数据库里的txt字段循环出来的
    <volist name="list" id="vo">
    <script>
    document.write(f('{$vo.mome}'));
    </script>
    </volist>
    楼上的方法不是很合适啊。
    如果在数据库之前操作的话应该怎么办呢?
    在<textarea name="txt"  id="txt" class="txtEdit" ></textarea>文本域里输入
    ggg
    ggggg
    ggg
    然后直接提交,并通过php代码储存到数据库。
    接着从数据库提取出来,并用f(str){...;return str;}处理,并输出document.write();
      

  12.   

    提交前,在form的submit事件中将字符中的\n替换为"<br/>",
    这样存入数据库中的数据就变成了“XXXX<br/>xxxxxx<br/>....”
    从数据库拿出来后就可以直接在层中使用了
      

  13.   

    提交之前,用JavaScript替换里面的\r\n为<br/>
    也可以提交到PHP,用PHP处理之后(也是替换里面的换行、空格等),再插入数据库
      

  14.   

    <form id="form1" name="form1" method="post" action="__URL__/save">//action执行的是PHP代码,存入数据库。
    <textarea name="mome"  id="mome" class="txtEdit" ></textarea>//文本域
    <input type="submit" name="Submit" value="添加" onclick="fc();" />//Submit按钮
    </form>
    怎么在存之前把文本域里的值处理啊,是不是Submit写个onclick事件,
    function fc(){
    var str = document.getElementById('mome').value;
    str = str.replace(/\r\n/ig, '<br/>');
    return str;
    }
    存入到数据库的还是没变化啊?!
      

  15.   


    这样的话,你在PHP处理吧,处理之后再插入数据卡$string = ereg_replace ("\r\n", "<br/>", $string);
      

  16.   

    谢谢大家~最终我还是在从数据库里取出来后再处理了。
    在f()方法里用了innerHTML来取{$vo.mome}的值突然发现这样更符合我的要求了。