Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将数据转换为JSON格式,其中字段为空格(单个或多个)和换行分隔值_Javascript_Json_Node.js_Reactjs - Fatal编程技术网

Javascript 将数据转换为JSON格式,其中字段为空格(单个或多个)和换行分隔值

Javascript 将数据转换为JSON格式,其中字段为空格(单个或多个)和换行分隔值,javascript,json,node.js,reactjs,Javascript,Json,Node.js,Reactjs,我正在尝试将空间分隔的数据转换为基于react的web应用程序的JSON格式,我使用node作为后端,但我无法解决这个问题,因为有时值之间只有一个空格,有时它们被多个空格甚至换行符分隔。下面是我试图转换的示例数据:好了 let txt=document.getElementById(“text”).innerHTML 设reg=/\d\d\d-(0?[1-9]| 1[0-2])-(0?[1-9]|[12][0-9]|[3[01])(00 |[0-9]|[0-9]|[0-9]|[0-5][0-9

我正在尝试将空间分隔的数据转换为基于react的web应用程序的JSON格式,我使用node作为后端,但我无法解决这个问题,因为有时值之间只有一个空格,有时它们被多个空格甚至换行符分隔。下面是我试图转换的示例数据:

好了

let txt=document.getElementById(“text”).innerHTML
设reg=/\d\d\d-(0?[1-9]| 1[0-2])-(0?[1-9]|[12][0-9]|[3[01])(00 |[0-9]|[0-9]|[0-9]|[0-5][0-9]):([0-9]|[0-5][0-9]):;
设arr=[];
让start=null;
让行,lastSpacePos;
而((match=reg.exec(txt))!=null){
如果(启动){
line=txt.slice(start,match.index).trim();
lastSpacePos=行。lastIndexOf(“”);
arr.push({
日期:行。切片(0,19),
文本:line.slice(20,lastSpacePos.trim(),
用户id:line.slice(lastSpacePos.trim())
});
}
start=match.index
}
控制台日志(arr)

2014-06-01 23:07:58总统在格鲁吉亚分离的中东地区辞职
阿布哈兹t.co/Daplovcv纽约时报
2014-06-01 23:48:06《纽约时报FlipBoard气候理解指南》
变更及其后果t.co/uPGTuYiSmQ nytimes
2014-06-01 23:59:06感谢年轻大学毕业生的所有奋斗
从表面上看,四年制的学位可能从未像现在这样有价值
t、 co/Gjf6wrwMsS纽约时报
2014-06-01 23:35:09做一名社区大学毕业生总比做一名
大学辍学者t.co/k3CO7ClmIG nytimes
2014-06-01 22:47:04与退伍军人事务健康部分享您的经验
care t.co/PrDhLC20Bt纽约时报
2014-06-01 22:03:27几乎所有进入NBA的人都放弃希望。
季后赛t.co/IQAJ5XNddR
好了

let txt=document.getElementById(“text”).innerHTML
设reg=/\d\d\d-(0?[1-9]| 1[0-2])-(0?[1-9]|[12][0-9]|[3[01])(00 |[0-9]|[0-9]|[0-9]|[0-5][0-9]):([0-9]|[0-5][0-9]):;
设arr=[];
让start=null;
让行,lastSpacePos;
而((match=reg.exec(txt))!=null){
如果(启动){
line=txt.slice(start,match.index).trim();
lastSpacePos=行。lastIndexOf(“”);
arr.push({
日期:行。切片(0,19),
文本:line.slice(20,lastSpacePos.trim(),
用户id:line.slice(lastSpacePos.trim())
});
}
start=match.index
}
控制台日志(arr)

2014-06-01 23:07:58总统在格鲁吉亚分离的中东地区辞职
阿布哈兹t.co/Daplovcv纽约时报
2014-06-01 23:48:06《纽约时报FlipBoard气候理解指南》
变更及其后果t.co/uPGTuYiSmQ nytimes
2014-06-01 23:59:06感谢年轻大学毕业生的所有奋斗
从表面上看,四年制的学位可能从未像现在这样有价值
t、 co/Gjf6wrwMsS纽约时报
2014-06-01 23:35:09做一名社区大学毕业生总比做一名
大学辍学者t.co/k3CO7ClmIG nytimes
2014-06-01 22:47:04与退伍军人事务健康部分享您的经验
care t.co/PrDhLC20Bt纽约时报
2014-06-01 22:03:27几乎所有进入NBA的人都放弃希望。
季后赛t.co/IQAJ5XNddR

这是一段将数据解析为json的代码,其中每行代表一个对象,对象属性由空格/多空格分隔

let string = `2008-06-05   text1       1
2008-06-01               text2       2`;

let regex = /([-0-9]+)\s+([a-zA-Z-_0-9]+)\s+([0-9]+)\b/g;

parseString = function parseString(string) {
    let obj = [];
    while (temp = regex.exec(string)) {
        obj.push({
            created_at: temp[1],
            text: temp[2],
            user_id: temp[3]
        });
    }

    return JSON.stringify(obj);
};
使用数据字符串调用
parseString
,以获取json对象

parseString(string);
>> "[{"created_at":"2008-06-05","text":"text1","user_id":"1"},{"created_at":"2008-06-01","text":"text2","user_id":"2"}]"

这是一段将数据解析为json的代码,其中每行表示一个对象,对象属性由空格/多空格分隔

let string = `2008-06-05   text1       1
2008-06-01               text2       2`;

let regex = /([-0-9]+)\s+([a-zA-Z-_0-9]+)\s+([0-9]+)\b/g;

parseString = function parseString(string) {
    let obj = [];
    while (temp = regex.exec(string)) {
        obj.push({
            created_at: temp[1],
            text: temp[2],
            user_id: temp[3]
        });
    }

    return JSON.stringify(obj);
};
使用数据字符串调用
parseString
,以获取json对象

parseString(string);
>> "[{"created_at":"2008-06-05","text":"text1","user_id":"1"},{"created_at":"2008-06-01","text":"text2","user_id":"2"}]"

如果你懂德语,这本书很棒:

您的注册ex应该是这样的(我现在测试了它):

这意味着:

(\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2})
日期为
组1
。您可以分别访问每个匹配的组

\s{1}
正好是一个空格

([\w\w]*?)
任何长度的所有类型的单词和非单词符号,不贪婪,如
组2

\s{7,}
7个或更多空格

(\w{7})
精确的7个符号单词,如
组3

如果您的用户ID可能有或多或少的符号,您必须更改中的
(\w{7})
,例如
(\w{6,8})
中的6到8个字母

你需要一个多行匹配!使用正则表达式后面的m可以得到:
/…/m

const regexpr = /(\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2})\s{1}([\w\W]*?)\s{7,}(\w{7})/m;
这些德国网站也很好:

匹配组:

let match = 'your string'.match(/(\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}\s{1}([\w\W]*?)\s{7,}(\w{7})/m)
alert( match.length ); // 3
alert( match[0] ); // The date
alert( match[1] ); // The text
alert( match[2] ); // The userid
此处用英文描述:

现在你找到了第一根火柴。 如果添加g,则reg ex匹配全局,这意味着所有匹配的零件

let reg = /your regexp/mg;
您可以使用以下工具进行测试:


如果你懂德语,这本书很棒:

您的注册ex应该是这样的(我现在测试了它):

这意味着:

(\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2})
日期为
组1
。您可以分别访问每个匹配的组

\s{1}
正好是一个空格

([\w\w]*?)
任何长度的所有类型的单词和非单词符号,不贪婪,如
组2

\s{7,}
7个或更多空格

(\w{7})
精确的7个符号单词,如
组3

如果您的用户ID可能有或多或少的符号,您必须更改中的
(\w{7})
,例如
(\w{6,8})
中的6到8个字母

你需要一个多行匹配!使用正则表达式后面的m可以得到:
/…/m

const regexpr = /(\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2})\s{1}([\w\W]*?)\s{7,}(\w{7})/m;
这些德国网站也很好:

匹配组:

let match = 'your string'.match(/(\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}\s{1}([\w\W]*?)\s{7,}(\w{7})/m)
alert( match.length ); // 3
alert( match[0] ); // The date
alert( match[1] ); // The text
alert( match[2] ); // The userid
描述