2013-10-18 113 views
1

我想检查是否有任何输入的字符串属于类的名词。所有情况下切换

var answer = prompt("enter sentence").toLowerCase(); 

function Noun(name) { 
    this.name = name; 
} 

spoon = new object("noun"); 

我可以找到像wwwspoonwww之间的任何子字符串和属于任何类的匹配吗?

var analysis = function(string) { 
    switch (true) { 
     case /any string/.test(string): 
     if (?){ 
      console.log("noun"); 
     } 
     else { 
      console.log("not noun") 
     }; 
     break; 
    } 
}; 
analysis(answer); 
+0

有没有内置的机制来记录类的所有成员。如果你想这样做,你需要在你的类定义中实现它。 – Barmar

+0

你想要查找是否有与该字符串不相关的名词类? – plalx

+0

plalx是的,我愿意。 – pi1yau1u

回答

1

您想寻找是否有与 字符串实例化一个名词类? - @plalx

是我做的 - @ pi1yau1u

在这种情况下,你可以使用地图来存储所有新创建的实例并实现了一个API,允许您通过对它们进行检索或检索整个列表。我还实现了一个findIn实例方法,该方法将返回指定字符串中该名词的索引,如果未找到,则返回-1。

DEMO

var Noun = (function (map) { 

    function Noun(name) { 
     name = name.toLowerCase(); 

     var instance = map[name]; 

     //if there's already a Noun instanciated with that name, we return it 
     if (instance) return instance; 

     this.name = name; 

     //store the newly created noun instance 
     map[name] = this; 
    } 

    Noun.prototype.findIn = function (s) { 
     return s.indexOf(this.name); 
    }; 

    Noun.getByName = function (name) { 
     return map[name.toLowerCase()]; 
    }; 

    Noun.list = function() { 
     var m = map, //faster access 
      list = [], 
      k; 

     for (k in m) list.push(m[k]); 

     return list; 
    }; 

    return Noun; 

})({}); 

new Noun('table'); 
new Noun('apple'); 

//retrieve a noun by name 
console.log('retrieved by name :', Noun.getByName('table')); 

//check if a string contains some noun (without word boundaries) 
var s = 'I eat an apple on the couch.'; 

Noun.list().forEach(function (noun) { 
    if (noun.findIn(s) !== -1) console.log('found in string: ', noun); 
}); 
1

要检查是否某些字符串是另一个字符串中您可以使用str.indexOf(string);

你不需要在这种情况下使用switch。但是,“所有情况”,你会使用default:

+0

这并没有回答这个问题,它的一部分,但它是不完整的。 – plalx

+0

“问题”是“切换所有情况”。但你的答案做得很好。我承认我没有进入“......属于任何阶级?”在“我可以找到像wwwspoonwww之类的任何子字符串和属于任何类的匹配吗?” – hol

相关问题