我正在使用jQuery jTable插件来显示存储在我的mysql数据库中的会话变量数据,其格式为:
gateway|i:1;FirstName|s:7:"Shelley";LastName|s:2:"VS";Status|s:7:"Enabled";UID|s:10:"b81ef6a12a";AdminGroup|s:8:"Sysadmin";
我在jtable列中显示所有会话数据,这不是必需的。我需要使用JavaScript从字符串中仅提取FirstName
部分。我是一个javascript新手。我做了以下事情:
name: {
title: 'Admin Name',
display: function (data) {
var x = data.record.data;
if(x.match("FirstName")) {
return "yes";
}
},
},
在我的新jtable
列中显示“是”,因为使用x.match在字符串中找到FirstName
数据。如何使用javascript从上面的文本中仅提取名字部分。我将以相同的格式拥有多条记录。
提前致谢。
已添加到我原来的帖子
@cytofu对新手的优秀答案..我改变了代码以适应我的jTable(没有附加功能),如下所示,运行正常:谢谢。
firstname: {
title: 'First Name',
display: function (data) {
var str = data.record.data;
var startOfSection = str.indexOf('FirstName');
var startOfValue = str.indexOf('"',startOfSection)+1;
var endOffValue = str.indexOf('"',startOfValue); //one char longer, as needed for substring
var value = str.substring(startOfValue,endOffValue);
return value;
},
},
//last name
lastname: {
title: 'Last Name',
display: function (data) {
var str = data.record.data;
var startOfSection = str.indexOf('LastName');
var startOfValue = str.indexOf('"',startOfSection)+1;
var endOffValue = str.indexOf('"',startOfValue); //one char longer, as needed for substring
var value = str.substring(startOfValue,endOffValue);
return value;
},
},
答案 0 :(得分:2)
您有三种常见方式:
.split()
是你最好的朋友; 使用正则表达式获取数据:
var patient = 'gateway|i:1;FirstName|s:7:"Shelley";LastName|s:2:"VS";Status|s:7:"Enabled";UID|s:10:"b81ef6a12a";AdminGroup|s:8:"Sysadmin";';
alert(patient.match(/FirstName\|\w\:\d+\:\"(\w+)\"/)[1]);
答案 1 :(得分:0)
将此功能添加到脚本中:
function extractValue(str,searchStr){
var startOfSection = str.indexOf(searchStr);
var startOfValue = str.indexOf('"',startOfSection)+1;
var endOffValue = str.indexOf('"',startOfValue); //Position of first char AFTER the value, as needed for substring
var value = str.substring(startOfValue,endOffValue);
return value;
}
您可以使用以下方式进行测试:
var str = 'gateway|i:1;FirstName|s:7:"Shelley";LastName|s:2:"VS";Status|s:7:"Enabled";UID|s:10:"b81ef6a12a";AdminGroup|s:8:"Sysadmin";';
var searchStr = 'FirstName|';
alert (extractValue(str,searchStr));
更改您的jTable函数片段,如下所示:
name: {
title: 'Admin Name',
display: function (data) {
var x = data.record.data;
if(x.match("FirstName")) {
return extractValue(x,"FirstName");
}
},
},