首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么IndexOf不匹配整个子字符串?

为什么IndexOf不匹配整个子字符串?
EN

Stack Overflow用户
提问于 2019-08-19 21:47:38
回答 3查看 166关注 0票数 0

我正在尝试制作一个基于文本的游戏,我需要使用Javascript和/或jQuery从文本区域元素中搜索用户输入的某些子字符串,以触发唯一的响应。

我尝试使用PHP将输入作为表单数据提交,但就我的代码而言,使用JS/jQuery更为简单。我目前正在使用indexOf()方法。

代码语言:javascript
复制
var substr = "test substr";
function test() {
  var textareaVal = $("#wiyetxt").val();
  if (substr.indexOf(textareaVal) !== -1) {
    alert("Found");
  }
  else {
    alert("Nope");
  }
}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<textarea id="wiyetxt"></textarea>
<input type="button" onclick="test();" value="Send">
<input type="reset" value="Clear">

当我的输入包含字符串"test substr“时,我期望我的函数提醒"Found”,但是如果子字符串中的任何字母按顺序出现,它就会提醒“查找”。例如,"t“、"es”和"substr“--所有警报-- "Found”以及确切的字符串。但是,如果在字符串中添加任何内容,它会警告"Nope",例如,"test substr test substr“返回"Nope”。为什么会发生这种事?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-08-19 21:51:53

这是因为您正在查找变量的子字符串,而不是查找输入字符串的子字符串。

您会想要像这样翻转indexOf的参数:

代码语言:javascript
复制
if (textareaVal.indexOf(substr) !== -1) {
票数 4
EN

Stack Overflow用户

发布于 2019-08-19 21:53:33

除非我误解了,我认为问题是您试图检查substr是否包含文本区域中的值,但实际上应该检查相反的值。也就是说,文本区域中的值是否包含子字符串?

尝试将表达式从以下位置翻转:

代码语言:javascript
复制
substr.indexOf(textareaVal) 

代码语言:javascript
复制
textareaVal.indexOf(substr) 
票数 1
EN

Stack Overflow用户

发布于 2019-08-19 21:51:36

ES6方式:

代码语言:javascript
复制
if (textareaVal.includes(substr)) {
    alert("Found");
} else {
    alert("Nope");
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57564320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档