分割带有连字符的字符串

时间:2019-03-11 10:16:49

标签: javascript regex

我想知道如何拆分并获取以下变量中的值

var str= "send-money-from-united-states-to-hong-kong"
var str1= "send-money-from-thailand-to-singapore"

预期输出:United States Hong Kong

预期输出:Thailand Singapore

3 个答案:

答案 0 :(得分:1)

这里不需要正则表达式。

此简单代码将提取所需数据:

var strArr = "send-money-from-thailand-to-singapore".replace("send-money-from-", "").split("-");
for (i = 0; i < strArr.length; i++) { 
  // capitalize letters
  strArr[i] = strArr[i].charAt(0).toUpperCase() + strArr[i].slice(1);
}
var countries = strArr.join(" ").split(" To ");
console.log(countries[0]);
console.log(countries[1]);

我假设字符串的格式相同:以send-money-from-开头,国家/地区除以-to-

答案 1 :(得分:0)

由以下js解决。

可以简化,但逐步进行以更好地理解:

var str = "send-money-from-united-states-to-hong-kong"

str = str.replace("send-money-from-", "");
str = str.replace("-to-", " ");
str = str.replace(/-/g, " ");
str = str.split(" ");
for (i = 0; i < str.length; i++) {
  str[i] = str[i].charAt(0).toUpperCase() + str[i].slice(1)
}

console.log(str.join(" "));

答案 2 :(得分:-1)

使用javascript的split功能会有所帮助

var strArr = str.split('-')

您将获得一个数组,然后可以根据自己的喜好进行操作。因此,对于预期的输出,您将希望连接所需的索引。

var strArr = str.split('-')
var strArr2 = str2.split('-')
console.log(strArr[4], strArr[5], strArr[6], strArr[7])
console.log(strArr2[3], strArr2[5])

然后使用自定义功能,您可以获得标题

String.prototype.toProperCase = function () {
    return this.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
};
strArr[2].toProperCase()

Lodash可以使这种操作最小化,例如:

var strArr = _.map(_.split(str), function(text) { return _.startCase(text) })

然后获取必要的值。就操纵数组以从字符串中获取正确的值而言,您将需要某种具有可接受文本的模板数组。

然后,您可以将字符串数组映射到该模板数组,并且仅接受满足真实条件的值。

// Remember evaluating case when creating array (LowerCase vs TitleCase)
var templateArray = ['Thailand', 'Singapore']
var strArr = _.map(_.split(str), function(text) { return _.startCase(text) })

var reducer = function(accumulator, currentValue) {
    if(templateArray.includes(currentValue)) {
        accumulator.push(currentValue)
    }
}

var newString = strArr.reduce(reducer, [])