我有这样的文字:
(1th) a
(2th) b
(3th) c
我可以使用jquery将此文本转换为这样的对象吗?
[{"place":"1th","text":"a"},{},...]
我希望这个用each()函数处理文本。 任何其他使用javascript或jquery进行文本处理的解决方案都很受欢迎。
答案 0 :(得分:1)
假设你的字符串总是每行只有一个条目:
var regex = /^\((.+?)\)\s*(.+?)$/i;
var result = text.split( "\n" ).map(function( str ) {
var parsed = regex.exec( str );
return {
place: parsed[ 1 ],
text: parsed[ 2 ]
};
});
console.log( result );
// => [{ place: "1th", text: "a" }, ...]
作为奖励,此解决方案不需要jQuery:)
答案 1 :(得分:0)
尝试这样的事情,它基本上将字符串转换为数组,然后将其转换为对象。
var str = 'hello my name is slim shady.';
var arr = str.split(' ');
var obj = {};
for (var i = 0; i < arr.length; i++) {
obj[i] = arr[i];
}
console.log(obj);
答案 2 :(得分:0)
尝试以下
var textArr = ["a","b","c"];
var newObjectArr = [];
$.each(textArr,function(index,obj){
var single = { "place":(index+1)+"th", "text":obj };
newObjectArr.push(single);
});
console.log(newObjectArr); // will hold objects
我希望它有所帮助。
答案 3 :(得分:0)
简单的方法,我想:
HTML:
<html>
<head>
<script type=text/javascript src=script.js ></script>
</head>
<body>
<list>
(1th) a
(2th) b
(3th) c
</list>
<br>
<output></output>
</body>
</html>
Javascript(script.js):
window.onload = function() {
list = document.getElementsByTagName("list")[0].innerHTML.trim().split('\n')
for (i=0;i<list.length;i++) {
list[i] = list[i].replace(/[()]/g, '').trim().split(' ')
}
document.getElementsByTagName("output")[0].innerHTML = list
}
输出:
list = [[1th, a], [2th, b], [3th, c]]
jsfiddle:http://jsfiddle.net/YTAGe/