在条件检查期间如何检查和删除字符串中多余的空格

时间:2019-04-30 16:32:35

标签: javascript conditional-statements space

if (userResponseField.value.toUpperCase().includes('MY NAME IS ') === true || userResponseField.value.toUpperCase().includes('MY NAME\'S ') === true) {

我基本上想做的是创建某种聊天机器人,并且它运行良好,只是它被多余的空格弄糊涂了。在条件检查期间如何删除它们?我一直在寻找答案,但没有一个与条件有关,尽管它们仍然是正确的,只是没有以我想要做的整体方式来工作。注意:我不希望条件改变字符串/变量本身。

4 个答案:

答案 0 :(得分:1)

您可以使用正则表达式:

if (userResponseField.value.match(/my\s+name(\s+i|')s/gi))

对于诸如' My name is '之类的输入,它返回true。

let predicate = str => !!str.match(/my\s+name(\s+i|')s/gi);

[
  'my NaME    iS    ',
  'my NaME\'s',
  'my name s',
  'my ame is',
  'my nameis',
].forEach(input => console.log(input, ':', predicate(input)));

答案 1 :(得分:0)

看看trim

if (
userResponseField.value.toUpperCase().trim().includes('MY NAME IS') === true ||
 userResponseField.value.toUpperCase().trim().includes('MY NAME\'S') === true
) {

答案 2 :(得分:0)

您可以在值和硬编码的字符串上都使用String.prototype.trim()

var userResponseField = {};
userResponseField.value = 'MY NAME IS';
if (userResponseField.value.toUpperCase().trim().includes('MY NAME IS '.trim()) === true || userResponseField.value.toUpperCase().trim().includes('MY NAME\'S '.trim()) === true) {
console.log("true");
}

答案 3 :(得分:0)

又是我。 我找到了一种聪明的方法来执行此操作,如果将来某些人遇到此问题并且刚刚找到此线程,这就是我解决问题的方法:

var userResponseFieldOutput = userResponseField.value;
userResponseField.value = userResponseField.value.replace(/\s+/g, ' ');if 

由于此代码以及我在上面发布的条件都存储在一个函数中,因此我将使用userResponseFieldOutput在聊天框中输出用户的消息。尽管userResponseField.value的空格已删除,但仍未编辑。

例如:

chatResponse(userResponseFieldOutput, "Hi, " + userName);

忽略userName变量,它是代码的一部分,现在不必显示。这是我做的另一个功能,第一个值是右侧聊天中显示的内容,其中显示了用户的响应。聊天左侧显示的是字符串和逗号后面的变量,其中显示了聊天机器人的消息。但是如您所见,我不使用userResponseField.value。相反,我使用的是userResponseFieldOutput,它将打印用户的输出而不会删除多余的空白。

希望对寻求该问题解决方案的所有人都有用。