正确地逃避javascript json字符串中的换行符

时间:2014-12-20 21:11:06

标签: javascript json

我在JavaScript中有一个非常长的JSON字符串。它有几个\ n,需要在客户端转义:

replace(/\n/g, '\\n'); 

现在的问题是,这个replace()在我的JSON字符串末尾添加了一个额外的换行符,这是我不想要的(结果是我的拆分(" \ n" )会产生一个空的无效的额外行。那么,我怎样才能正确处理这个?在split("\n")最终保持功能的同时,如何在不破坏结构的情况下正确地转义该字符串?

当前的字符串结构类似于:" testdata \ ntestdata \ ntestdata"等

编辑:编辑,因为我似乎没有提供足够的信息:

  1. 客户端从服务器收到字符串
  2. 此字符串是一个JSON字符串,非常长。此字符串中的几个部分除以" \ n"
  3. On Clientside我需要在字符串上执行split(" \ n")将其拆分为50行。但是我得到51,因为在我转义字符串
  4. 之后在末尾添加了一个额外的\ n
  5. 所以,我只接收e.data中的数据,然后执行replace(/\n/g, '\\n');,之后执行拆分(" \ n")。这就是全部。
  6. 如何防止split()因我的正则表达式而破坏?
  7. 我希望这能更好地解释我的问题。

1 个答案:

答案 0 :(得分:1)

如果您要做的就是拆分换行符分隔的字符串,则无需replace调用。下面的代码示例修剪任何前导或尾随空格(包括换行符)并在\n上拆分。请注意,ECMAScript 5.1中添加了trim,某些旧版浏览器不支持function splitNewlineSeparatedString (s) { return s.trim().split("\n"); } console.log(splitNewlineSeparatedString("testdata\ntestdata\ntestdata\n\n\n"));。有关详细信息,请参阅此MDN page

progress=(ProgressBar)findViewById(R.id.progressBar1);
        plus=(Button)findViewById(R.id.button1);
        minus=(Button)findViewById(R.id.button2);

        plus.setOnClickListener(new OnClickListener()
        {

            @Override
            public void onClick(View v) 
            {

                if(v==plus)
                {
                    progress.incrementProgressBy(10);
                    setProgress(100*progress.getProgress());
                }

            }
        });

        minus.setOnClickListener(new OnClickListener()
        {

            @Override
            public void onClick(View v1) 
            {
                if(v1==minus)
                {
                    progress.incrementProgressBy(-10);
                    setProgress(90*progress.getProgress());
                }

            }
        });