如何使用javascript从字符串中提取值

时间:2017-01-02 11:06:34

标签: javascript

我有一个包含此值的变量

<AirportCode>LKO</AirportCode> <CityOrAirportName>LUCKNOW AMAUSI</CityOrAirportName> <Country>India</Country> <CountryAbbrviation>IN</CountryAbbrviation> <CountryCode>733</CountryCode> <GMTOffset>-5.5</GMTOffset> <RunwayLengthFeet>7835</RunwayLengthFeet>

如何从中提取国家/地区代码,在本例中为733.国家/地区代码可能不同,因此我需要以某种方式获取CountryCode标记内的值

3 个答案:

答案 0 :(得分:3)

您可以通过编程方式创建div。填充其innerHTML,然后获取CountryCode元素。

var data = "<AirportCode>LKO</AirportCode> <CityOrAirportName>LUCKNOW AMAUSI</CityOrAirportName> <Country>India</Country> <CountryAbbrviation>IN</CountryAbbrviation> <CountryCode>733</CountryCode> <GMTOffset>-5.5</GMTOffset> <RunwayLengthFeet>7835</RunwayLengthFeet>";

var div = document.createElement("div");
div.innerHTML = data;
console.log(div.querySelector('CountryCode').textContent);

使用

更好parse XML

var data = "<AirportCode>LKO</AirportCode> <CityOrAirportName>LUCKNOW AMAUSI</CityOrAirportName> <Country>India</Country> <CountryAbbrviation>IN</CountryAbbrviation> <CountryCode>733</CountryCode> <GMTOffset>-5.5</GMTOffset> <RunwayLengthFeet>7835</RunwayLengthFeet>";

var oParser = new DOMParser();
var oDOM = oParser.parseFromString('<root>' + data + '</root>', "text/xml");
console.log(oDOM.querySelector('CountryCode').textContent)

答案 1 :(得分:0)

如果这是您唯一需要的东西,您可以使用XML解析库,或只使用简单的RegExp。

只需使用正则表达式:/<CountryCode>(\d+)<\/CountryCode)/

例如:

var str = '<AirportCode>LKO</AirportCode> <CityOrAirportName>LUCKNOW AMAUSI</CityOrAirportName> <Country>India</Country> <CountryAbbrviation>IN</CountryAbbrviation> <CountryCode>733</CountryCode> <GMTOffset>-5.5</GMTOffset> <RunwayLengthFeet>7835</RunwayLengthFeet>';

function extractCountryCode(xmlStr) {
    var matches = xmlStr.match(/<CountryCode>(\d+)<\/CountryCode)/);
    if (matches.length == 2) {
        return matches[1];
    } else {
        return null;
    }
}

console.log(extractCountryCode(str));

答案 2 :(得分:0)

您可以使用函数indexOf和substring:

(添加了代码段以显示结果)

var data = "<AirportCode>LKO</AirportCode> <CityOrAirportName>LUCKNOW AMAUSI</CityOrAirportName> <Country>India</Country> <CountryAbbrviation>IN</CountryAbbrviation> <CountryCode>733</CountryCode> <GMTOffset>-5.5</GMTOffset> <RunwayLengthFeet>7835</RunwayLengthFeet>";
    
    var index1 = data.indexOf("<CountryCode>") + "<CountryCode>".length;
    var index2 = data.indexOf("</CountryCode>");

    var code = data.substring(index1, index2);

console.log(code);

添加CountryCode.length是因为方法indexOf将返回第一次出现的文本。

希望得到这个帮助。