0

我有这样的文字:

(1th) a
(2th) b
(3th) c

我可以使用 jquery 将此文本转换为这样的对象吗?

[{"place":"1th","text":"a"},{},...]

我希望它用 each() 函数处理文本。任何其他使用 javascript 或 jquery 进行文本处理的解决方案都值得赞赏。

4

4 回答 4

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 :)

于 2013-08-08T17:22:09.590 回答
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);
于 2013-08-08T17:17:20.680 回答
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

我希望它有所帮助。

于 2013-08-08T17:18:00.930 回答
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(脚本.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/

于 2013-08-08T18:02:40.760 回答