[英]Javascript extract value from string
我正在使用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;
},
},
你有三種常見的方式:
.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]);
將此函數添加到腳本:
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");
}
},
},
小提琴: http : //jsfiddle.net/nBG89/7/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.