我是JavaScript的新手,遇到了我想要完全理解的练习解决方案。
练习要求从字符串中删除所有元音。解决方案:
function disemvowel(str) {
return str.replace(/[aeiou]/gi, '');
}
我理解基本语法:
/'之间的任何内容都是您想要替换的内容
第二个参数是用
/ g是一个全球代码' ....?所以不只是第一个实例
我的问题:
解决方案中的括号代表什么?
我/ g之后是什么?我读到这意味着忽略,但它忽略了什么?
感谢您的任何信息! :)
答案 0 :(得分:2)
你所拥有的是所谓的“正则表达式”。在JavaScript中,你有所谓的“正则表达式文字”,这是/[aeiou]/gi
的东西。 [aeiou]
被称为“字符类”或“字符集”,表示“匹配aeiou
之一”。结束g
后的i
和/
是确定正则表达式行为方式的标志。 g
表示“全局”或“查找所有匹配”,i
表示“不区分大小写”。然后用空字符串''
替换所有这些匹配项,以便在生成的字符串中删除所有出现的元音
答案 1 :(得分:0)
在括号内键入要匹配的所有字符(将其视为字符枚举)。 import cats._
import cats.implicits._
import cats.arrow.FunctionK
import scala.language.higherKinds
object TraverseFromIso {
// This method can build you a `Traversable[Seq]` from
// an `Traversable[List]` and a pair of polymorphic conversion
// functions:
def traverseFromIso[F[_], Z[_]]
(forward: F ~> Z, inverse: Z ~> F)
(implicit zt: Traverse[Z])
: Traverse[F] = new Traverse[F] {
def foldLeft[A, B](fa: F[A], b: B)(f: (B, A) ⇒ B): B = zt.foldLeft(forward(fa), b)(f)
def foldRight[A, B](fa: F[A], lb: Eval[B])(f: (A, Eval[B]) => Eval[B]): Eval[B] =
zt.foldRight(forward(fa), lb)(f)
def traverse[G[_], A, B]
(fa: F[A])
(f: (A) ⇒ G[B])
(implicit appG: Applicative[G])
: G[F[B]] = {
(zt.traverse(forward(fa))(f)(appG)).map(zb => inverse(zb))
}
}
// A little demo
def main(args: Array[String]): Unit = {
// To instantiate a `Traverse[Seq]`, we have to provide
// two natural transformations (from List to Seq and back):
implicit val seqTraverse: Traverse[Seq] = traverseFromIso(
new FunctionK[Seq, List] { def apply[X](sx: Seq[X]): List[X] = sx.toList },
new FunctionK[List, Seq] { def apply[X](lx: List[X]): Seq[X] = lx }
)
// do stuff with `Traversable[Seq]` here
}
}
用于我 nsensitive。
答案 2 :(得分:0)
/[aeiou]/gi
会将a,e,i,o,u
中的任何字符与case insensitivity
相匹配,这就是i
最后的内容
基本上在你的情况下,它将从你的字符串中删除所有元音的出现(用空字符串替换元音)
const str = "hUnger gamEs";
console.log(str.replace(/[aeiou]/gi, ''));

答案 3 :(得分:0)
g修饰符:全局。所有比赛(首场比赛都没有回归)
i修饰符:不敏感。不区分大小写的匹配(忽略[a-zA-Z]的情况)