什么是string.indexOf(“*。”)在Javascript中做什么?

问题描述:

我调试一些代码,发现了下面的代码片段,只是没有得到它做什么:什么是string.indexOf(“*。”)在Javascript中做什么?

function appendModelPrefix(value, prefix) { 
    if (value.indexOf("*.") === 0) { 
     value = value.replace("*.", prefix); 
    } 
    return value; 
} 

什么我的字符串值有看起来像获得通过,如果条件验证? 什么是“*”。准确地做?我没有得到通配符...

+0

我可能是错的,但我认为它的检查值,如果没有了”之前出现。 “比它填充前缀 – Drewdin 2011-12-15 16:52:43

+0

这应该有助于你理解代码的作用:http://jsfiddle.net/fuAwb/ – Ivan 2011-12-15 16:54:17

我没有通配符。它搜索然后替换文字"*."通过prefix

indexOf发现的"*."第一次出现的字符串:“*”

>>>"aaa*.".indexOf("*.") 
3 

因此,如果字符串开头您consition会成功了(索引0)

>>> "*.aaa".indexOf("*.") 
0 

替换方法将取代第一次出现“*”。

>>> 'abbbc'.replace(/b+/, 'z') 
"azc" 

的indexOf会给字符串内文本的位置:与所选择的前缀

>>> "*.*.".replace("*.", "z") 
"z*." 

顺便说一句,只有当您使用正则表达式,而不是字符串模式得到通配符的替代品。

因此,if语句读取如果value以“*”开头。然后将其替换为prefix

如果字符串以子串*.开头,则将其替换为prefix

>>> "*.".indexOf('*.') 
0 
>>> "a*.".indexOf('*.') 
1 

JavaScript中没有wilcard-thing .indexOf()

它只是将值*.替换为prefix

如果您的value*.开头,那么它会将*.替换为prefix参数。

它是一种香草字符串匹配,如果value开始*.那么*.由字符串替换prefix

"aaa" -> "aaa" 
"*.a" -> "a" + prefix