繁体   English   中英

Javascript从字符串中提取值

[英]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()是你最好的朋友;
  • 将传入格式更改为JSON;
  • 用正则表达式获取数据:

    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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM