我正在構建一個基于瀏覽器的應用程式,它允許用戶創建包含一些 .json 檔案的檔案夾(沒什么大不了的)。問題是,我使用的框架 (NW.js) 似乎并不關心允許用戶創建名為“CON”或“NUL”的檔案夾;這些不應該被創建,里面的檔案就消失了,洗掉檔案夾本身有點困難。
我可以毫無問題地做這樣的事情來防止發生:
var newFolder = "nul";
function checkFolderName(text) {
switch(newFolder) {
case "con":
console.log("folder can't be created")
break;
case "nul":
console.log("folder can't be created")
break;
// and so on... there's about 23 windows-reserved names that I could find
default:
console.log("folder can be created")
}}
checkFolderName(newFolder);
但我想知道是否有一些更簡單的方法可以通過 Regex/Javascript 來檢查這一點,或者對這個想法采取一些不同的方法。
uj5u.com熱心網友回復:
這里有一種更簡潔的方式來寫你想要的東西。
函式重命名以暗示它接受一個字串并回傳一個布林值。
如果輸入字串無效,則回傳 false。
所有被禁止的名稱都集中在一個易于更新的串列中。
通過串列是否包含名稱來檢查有效性。
function folderNameIsValid (name) {
let valid = false;
if (!name || typeof(name) !== 'string') {
return valid;
}
const bannedNames = [
'con',
'nul'
];
if (!bannedNames.includes(name.toLowerCase())) {
valid = true;
}
return valid;
}
if (folderNameIsValid('NUL')) {
console.log('folder can be created');
} else {
console.log('folder cannot be created');
}
uj5u.com熱心網友回復:
如果你想使用正則運算式,你可以這樣做:
if (/con|nul|abc|xyz/.test(newFolder))
console.log("folder can't be created");
的|字符的裝置“或”。所以如果newFolder是"con"或"nul"或"abc"或,測驗函式將回傳真"xyz"
您還可以使用 switch case 的這種表示法:
switch (varName)
{
case "con":
case "nul":
case "abc":
case "xyz":
console.log("folder can't be created");
break;
default:
console.log("folder can be created");
}
uj5u.com熱心網友回復:
我的朋友可以用正則運算式幫我做到這一點:
let valid = /^(con|prn|aux|nul|com|lpt)\d*$/gi.test(newFolder)
console.log(valid) // true or false
但是,如果您想添加更多“禁止名稱”,它會開始變得非常笨拙,因此jaredcheeda的建議在這種情況下非常方便
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/369875.html
標籤:javascript 视窗 目录 网易
