我正在建立一个基本的刽子手'为我妻子的历史课游戏。为此,我创建了一个创建游戏乐队的课程'以字符串和数组格式。
在该类中,我还想创建另一个面向播放器的数组,并根据其输入进行更改。那个数组应该显示一个' *'对于每个字母和一个' _'为每个空间。
我尝试在if或switch语句中使用regex,同时在没有运气的情况下迭代gameWord数组。这是我的基本尝试之一:
class GameWord {
constructor(word) {
if ( word.length <= 3 )
return console.error('Error: Your word must be at least three letters long');
this.word = word.replace(/[^a-zA-Z\s]/g, '');
this.wordUserView = this.word.toProperCase( );
this.wordSet = this.wordUserView.split('');
const len = this.wordSet.length;
var i = 0;
this.wordSetHidden = [];
for ( ; i <= len; i++) {
if (this.wordSet[i] == /[a-zA-Z]/g) {
this.wordSetHidden.push("*");
}
};
}
};
这是我尝试过的另一个例子:
var reAlpha = /[a-zA-Z]/;
var reSpace = /\s/;
var arr = ["W", "i", "n", "s", "t", "o", "n", " ", "1", 2, 0];
var newArr = [];
for ( var i = 0; i < arr.length; i++ ) {
switch (arr) {
case reAlpha.match:
newArr.push(arr[i] = "*");
case reSpace.match:
newArr.push(arr[i] = "_");
break;
default: console.log("No matches")
};
}
我得到的是&#39;没有匹配&#39;当然,因为没有对数组中的元素进行直接比较。但是,当我尝试做像element.match(arr)这样的事情时,我觉得那个匹配不是一个函数,我猜是因为它将元素作为对象读取而不是字符串?
我知道我可以使用CSS隐藏单个字母,但我希望游戏逻辑能够在后端运行。学生可以轻松改变CSS以获得答案。
谢谢!
答案 0 :(得分:0)
在这种情况下你应该使用if语句。
如果您想使用开关
var reAlpha = /[a-zA-Z]/;
var reSpace = /\s/;
var arr = ["W", "i", "n", "s", "t", "o", "n", " ", "1", 2, 0];
var newArr = [];
for ( var i = 0; i < arr.length; i++ ) {
switch (true) {
case reAlpha.test(arr[i]):
newArr.push(arr[i] = "*");
case reSpace.test(arr[i]):
newArr.push(arr[i] = "_");
break;
default: console.log("No matches");
};
}
如果
var reAlpha = /[a-zA-Z]/;
var reSpace = /\s/;
var arr = ["W", "i", "n", "s", "t", "o", "n", " ", "1", 2, 0];
var newArr = [];
for ( var i = 0; i < arr.length; i++ ) {
if (reAlpha.test(arr[i]) {
newArr.push(arr[i] = "*");
} else if (reSpace.test(arr[i])) {
newArr.push(arr[i] = "_");
} else {
console.log("No matches");
}
}
答案 1 :(得分:0)
如果您将单词作为字符串,则可以使用带有正则表达式的replace
语句将字符替换为&#39; *&#39;和&#39; _&#39;:
var word = "Winston 120";
var wordToDisplay = word.replace(/[^\s]/g, '*').replace(/[\s]/g,'_');
如果您将单词作为数组,则可以在循环中执行if
语句:
var arr = ["W", "i", "n", "s", "t", "o", "n", " ", "1", 2, 0];
var newArr = [];
for ( var i = 0; i < arr.length; i++ ) {
if(/[^\s]/.test(arr[i])){
newArr.push(arr[i] = "*");
} else {
newArr.push(arr[i] = "_");
}
}