如何在JavaScript中检查字符串是否包含句号?

17
我想要能够检测一个字符串中是否包含".",并根据结果返回 true/false。
例如:
"myfile.doc" = TRUE

对比。

"mydirectory" = FALSE;
6个回答

42

使用 indexOf()

var str="myfile.doc";
var str2="mydirectory";

if(str.indexOf('.') !== -1)
{
  // would be true. Period found in file name
  console.log("Found . in str")
}

if(str2.indexOf('.') !== -1)
{
  // would be false. No period found in directory name. This won't run.
  console.log("Found . in str2")
}


3
如果字符未被找到,indexOf 返回 -1,而不是 0。 - jwodder
你应该将比较值设为-1而不是0;因为如果第一个字符是句点,indexOf()方法会返回0。 - kwah
哈哈,这就是当你在想strpos()并编写indexOf()时会发生的事情 :) - AlienWebguy

7

只需测试indexOf方法的返回值:someString.indexOf('.') != -1。无需使用正则表达式。


4

我知道这是一个老问题,但这里有一种新方法可以解决它(不支持旧的浏览器->can I use):

str.includes('.'); //returns true or false

docs


已在 Chrome - 版本 80.0.3987.132 (官方版本) (64 位元) 中测试。发现可行! - Arun

1

仅补充已经说过的内容:

关于这是否是一个好主意,有不同的意见,但如果你愿意,你可以扩展所有的String实例,加入一个contains方法:

String.prototype.contains = function(char) {
    return this.indexOf(char) !== -1;
};

我倾向于喜欢这种类型的事情,当一个方法的作用相对明确时。


1

一些简单的正则表达式就可以了。

 if (myString.match(\.)) {
   doSomething();
 }

0
使用indexOf方法。它返回一个整数,表示子字符串的位置,如果未找到则返回-1。
例如:
var test="myfile.doc"
if (test.indexOf('.')) {alert("Period found!";}
else {alert("Period not found.  Sorry!";}

6
if (test.indexOf('.')) 这行代码的作用是检测indexOf返回值是否为0,而不是应该测试的-1。因此,你的代码会将没有句点的字符串视为有句点,将以句点开头的字符串视为没有句点。请注意修正此错误。 - jwodder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接