如何从字符串中获取两个变量

How to get two variables from the string?

本文关键字:两个 变量 获取 字符串      更新时间:2023-09-26

>我有这个字符串:'foo = bar; this = is; not = necessary'

我想得到这个结果:{"name" : "foo", "value" : "bar"}

没有必要,之后是什么;

我知道,我应该使用一些正则表达式,但我真的不明白正则表达式是如何工作的。

感谢是前进,

您可以使用:

var values='foo = bar; this = is; not = necessary'.split('; ')[0].split(' = ');
var obj={"name" : values[0], "value" : values[1]}

这样,您可以:

  1. 'foo = bar; this = is; not = necessary'.split('; ') ,返回['foo = bar','this = is','not = necessary']
  2. 你只需要第一个元素,所以'foo = bar; this = is; not = necessary'.split(';')[0]给出了'foo = bar'
  3. 然后你再次分裂:'foo = bar; this = is; not = necessary'.split(';')[0].split(' = ') ,这给了['foo','bar']
  4. 最后创建对象

一种使用正则表达式在特定字符串中搜索指定名称的方法,该名称将与字符串的foo = bar部分匹配:

function getNameValuePair(string, needle) {
    if (!string || !needle) {
        return false;
    }
    else {
        var newNeedle = needle + '''s+''=''s+''w+',
            expr = new RegExp(newNeedle),
            parsed = string.match(expr).join(),
            parts = parsed.split(/'s+'='s+/),
            returnObj = {'name' : parts[0], 'value' : parts[1]};
        return returnObj;
    }
}
var string = 'foo = bar; this = is; not = necessary',
    nameValueObj = getNameValuePair(string, 'foo');
console.log(nameValueObj);

JS小提琴演示。

当然,这可以适应您的要求。

然而,事实就是如此:

  1. 该函数检查两个参数是否存在,如果不存在,则仅返回 false
  2. 创建一个正则表达式模式,该模式由needle(在本例中为"foo")组成,后跟一个或多个空格单元,后跟单个=字符,后跟一个或多个空格字符。如果空白可能并不总是存在,最好更改为newNeedle = needle + '''s*''=''s*''w+'+匹配"一个或多个",*匹配"零或更多")。
  3. 从该模式创建一个正则表达式,
  4. 测试给定的字符串以查看它是否与模式匹配,如果是,则将匹配的字符串存储在 parsed 变量中,
  5. 用另一个正则表达式拆分parsed变量,有效地拆分为零个或多个空格后跟一个=,后跟零个或多个空格的模式,将分隔的部分存储在 parts 数组变量中,
  6. parts 变量构造对象。
  7. 返回该变量。

稍微更新了上面的内容,因为创建一行正则表达式的两行很愚蠢

function getNameValuePair(string, needle) {
    if (!string || !needle) {
        return false;
    }
    else {
        var expr = new RegExp(needle + '''s+''=''s+''w+'),
            parsed = string.match(expr).join(),
            parts = parsed.split(/'s+'='s+/),
            returnObj = {'name' : parts[0], 'value' : parts[1]};
        return returnObj;
    }
}
var string = 'foo = bar; this = is; not = necessary',
    nameValueObj = getNameValuePair(string, 'foo');
console.log(nameValueObj);

JS小提琴演示。

引用:

  • JavaScript 正则表达式。
  • string.match() .
  • string.split() .