如何用javascript将字符串转换成数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用javascript将字符串转换成数组相关的知识,希望对你有一定的参考价值。

我想把一个类似'["haha", [123, 456, ["haha2"], "hello, this is a test."]]'的字符串转换成数组["haha", [123, 456, ["haha2"], "hello, this is a test."]]。如果把以上例子作为测试的输入,JSON.parse()就可以实现;可是我需要处理的字符串中有一部分是经过ASCII编码的html元素 ("\u003cspan dir\u003d\"ltr\"\u003e\u003cspan class\u003d\"yP\" email\u003d\"haha@gmail.com\"\u003eHa Ha Ha\u003c/span\u003e\u003c/span\u003e"),经过测试如果括号内的字符串存在,那么由字符串向数组的转换就不会成功,如果移除它,那么转换会成功。请问这是为什么,有没有方法能不移除它直接进行转换?

<script type="text/javascript">
var str = '["haha","\u003cspan", [123, 456, ["haha2"], "hello, this is a test."]]';
var objarr = eval(str); //和JSON.parse()的功能一样,生成了数组
alert(objarr[1]);
</script>
执行上面的代码试一下,你会发现他会正常的进行转换,你的代码之所以转换错误,是因为字符串里面有双引号,上面字符串里每一对双引号是括起来了一个值,你这样的字符串加进去就破坏了原来用逗号分类开的一对对的值,造成数组语法错误。所以,去掉双引号就可以了。
var str = '["haha","(\u003cspan dir\u003d\ltr\\u003e\u003cspan class\u003d\yP\ email\u003d\haha@gmail.com\\u003eHa Ha Ha\u003c/span\u003e\u003c/span\u003e)", [123, 456, ["haha2"], "hello, this is a test."]]';
var objarr = eval(str); //和JSON.parse()的功能一样
alert(objarr[1]);
或者在需要用到双引号的地方用单引号代替,单引号前面要加上\,即\‘来代替双引号。追问

字符串"\u003cspan dir\u003d\"ltr\"\u003e\u003cspan class\u003d\"yP\" email\u003d\"haha@gmail.com\"\u003eHa Ha Ha\u003c/span\u003e\u003c/span\u003e" 中内部的双引号都是 \" 这种形式的,我不知道为什么会产生干扰。而且,这段字符串是一个标准的html文档中的span element,在您的code执行之后span属性的值都没了引号。

追答

var str = "['hana','(\u003cspan dir\u003d\"ltr\"\u003e\u003cspan class\u003d\"yP\" email\u003d\"haha@gmail.com\"\u003eHa Ha Ha\u003c/span\u003e\u003c/span\u003e)']";
var objarr = eval(str); //和JSON.parse()的功能一样
alert(objarr[1]);
这样写。原本你的字符串是用单引号括起了双引号,现在改用双引号括起单引号,这样就没有问题了。

追问

用双引号将单引号括起来后eval()确实可以实现功能,但是JSON.parse()却不行。还有一个问题如果将内部的双引号都改为单引号,程序的执行效率会下降,实际需要处理的字符串可能会是例子的上百倍。

追答

JSON.parse()是你使用的库,eval函数是javascript的原始函数,库具体实现我没研究,要使用的话你自己研究下,或者换用eval函数,出问题的原理是已经搞清楚了,其他的就看你了。
至于执行效率的问题,用单引号和双引号是没有差别的,只是你字符串你需要使用双引号就用单引号括,反之用双引号而已。没有效率的问题。
这不是php,单引号双引号还会区分是要解析还是直接显示。

参考技术A 使用unescape试试,对unicode解码。

Oracle中如何用SQL把字符串转换成整型

参考技术A

您可以使用cast函数将数字字符串转化为整型。

cast函数格式如下:

CAST(字段名 as int);

拓展资料

结构化查询语言(Structured Query Language)简称SQL(发音:/ˈes kjuː ˈel/ "S-Q-L"),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。

1986年10月,美国国家标准协会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言(ANSI X3. 135-1986),1987年得到国际标准组织的支持下成为国际标准。不过各种通行的数据库系统在其实践过程中都对SQL规范作了某些编改和扩充。所以,实际上不同数据库系统之间的SQL不能完全相互通用。

参考资料:百度百科_SQL

以上是关于如何用javascript将字符串转换成数组的主要内容,如果未能解决你的问题,请参考以下文章

如何用JS判断某个字符串可以转换成日期?

Oracle中如何用SQL把字符串转换成整型

如何用js 将字符串转换成 html

Oracle中如何用SQL把字符串转换成整型

Oracle中如何用SQL把字符串转换成整型

如何用js把字符串转化为整型