如果字符串包含另一个字符串的一部分,则为Javascript

时间:2019-12-11 23:15:21

标签: javascript

不确定解释它的最佳方法,但是我需要用javascript搜索一个字符串,以查看该字符串的一部分是否与另一个字符串匹配。在下面的代码中,var e列出了一些状态缩写。然后,我尝试了几种不同的if语句。我尝试搜索语句而不是“ indexof”的第一条语句。那行不通。第二个if语句仅由于变量中有一个值而起作用。第三条语句不起作用,因为该变量中再次有多个值。

如果状态缩写出现在两个字符串中,则我需要运行该语句。

var e = "MT, MI, OH, DC, ";
var TFF = "MT, WY, ND, SD, NE, MN, IA, WI, KS, MO, OK, AR, LA, TX, ";
if (e.search(TFF) === -1) {
  document.getElementById("test1").style.display = "block";
} else {}
if (e.indexOf("MI") >= 0) {
  document.getElementById("test2").style.display = "block";
} else {}
if (e.indexOf("DC DE MD PA VA WV") >= 0) {
  document.getElementById("test3").style.display = "block";
} else {}

4 个答案:

答案 0 :(得分:0)

比较它们的最简单方法是将它们都转换为数组,然后对照另一个数组检查一个数组,在循环中运行for循环

var e = "MT, MI, OH, DC, ";
var TFF = "MT, WY, ND, SD, NE, MN, IA, WI, KS, MO, OK, AR, LA, TX, ";

var arraye = e.split(",");
var arrayTiff = TFF.split(",");

for(values in arraye){

  //console.log(arraye[values])

 for (value2 in arrayTiff)

  {
    if(arraye[values]==arrayTiff[value2])
    console.log(arraye[values])
  }
}

答案 1 :(得分:0)

首先将字符串分成数组,并为每个元素去除空格。然后使用filter()函数过滤出不匹配的值:

const e = "MT, MI, OH, DC, ";
const TFF = "MT, WY, ND, SD, NE, MN, IA, WI, KS, MO, OK, AR, LA, TX, ";

let arr1 = e.split(",");
let arr2 = TFF.split(",");

arr1 = arr1.map(val => val.trim()).filter(val => val !== "");
arr2 = arr2.map(val => val.trim()).filter(val => val !== "");

const res = arr2.filter(val => arr1.includes(val)); 
console.log(res);

更新:

使用正则表达式:

const e = "MT, MI, OH, DC, ";
const TFF = "MT, WY, ND, SD, NE, MN, IA, WI, KS, MO, OK, AR, LA, TX, ";

const re = /[A-Z]{2}/g;
const res = TFF.match(re).filter(val => e.match(re).includes(val));

console.log(res);

答案 2 :(得分:0)

您应该将字符串转换为数组(手动或使用String#split)。

示例:

var TFF = "MT, WY, ND, SD, NE, MN, IA, WI, KS, MO, OK, AR, LA, TX, ";

var temp = TFF.split(/,\s+/);
console.log(temp.filter(Boolean));
// or
temp.pop();
console.log(temp);
// or
console.log(JSON.parse("[\"" + TFF.replace(/,\s+/g, "\",\"").replace(/,"$/, "") + "]"));

然后检查另一个数组中是否包含任何字符串。

示例:

var e = ["MT", "MI", "OH", "DC"];
var tff = ["MT", "WY", "ND", "SD", "NE", "MN", "IA", "WI", "KS", "MO", "OK", "AR", "LA", "TX"];
var other = ["DC", "DE", "MD", "PA", "VA", " WV"];

if (e.some(x => tff.includes(x))) console.log("Test 1");
// or
if (tff.some(x => e.includes(x))) console.log("Test 1");

if (e.some(x => x === "MI")) console.log("Test 2");
// or
if (e.includes("MI")) console.log("Test 2");

if (e.some(x => other.includes(x))) console.log("Test 3");
// or
if (other.some(x => e.includes(x))) console.log("Test 3");

答案 3 :(得分:-1)

const eArr = e.split(“,”).sort();
const fttArr = ftt.stplit(“,”).sort();
let found =0;
for (let i =0; i <= eArr.lengt; ++I) { 
  if (eArr[i] === fttArr[i]) ++found;
}

found === eArr.length