簡體   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