2013-10-18 169 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

相關問題