我想知道如何拆分并获取以下变量中的值
var str= "send-money-from-united-states-to-hong-kong"
var str1= "send-money-from-thailand-to-singapore"
预期输出:United States Hong Kong
预期输出:Thailand Singapore
答案 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, [])