gpt4 book ai didi

javascript - 字符串方法精确文本

转载 作者:行者123 更新时间:2023-11-30 07:05:07 25 4
gpt4 key购买 nike

所以,我是 JavaScript 的新手。我现在正在练习 Codeacedemy 教程,它让我创建了一个程序,可以在一串文本中找到我的名字。但是,我意识到如果我使用一个与我的名字相似的名字,它也会返回另一个名字。我可以使用什么方法或如何改进代码以使其只匹配字符串中的确切名称?

代码如下:

/*jshint multistr:true */

var text = "Hello my name is Zachary Sohovich. I'm a 20 year old dude from Southern California and I love to code";
var myName = "Zachary";
var hits = [];
for (var i = 0; i < text.length; i++){
if (text[i] == 'Z') {
for (var j = i;j < (i + myName.length); j++) {
hits.push(text[j]);
}
}
}
if (hits === 0) {
console.log("Your name was not found!");
}
else {
console.log(hits);
}

最佳答案

你可以 String.split空格处的字符串以创建一个单词数组,然后根据您的测试字符串检查每个单词,从而防止子字符串内的匹配。 (使用替代循环 while)

Javascript

var text = "Hello my name is Zachary Sohovich. I'm a 20 year old dude from Southern California and I love to code",
myName = "Zachary",
hits = 0,
array = text.split(/\s/),
length = array.length,
i = 0;

while (i < length) {
if (myName === array[i]) {
hits += 1;
}

i += 1;
}

if (hits === 0) {
console.log("Your name was not found!");
} else {
console.log(hits);
}

关于 jsfiddle

或者如果你真的想通过循环检查字符串来获得乐趣,那么你可以这样做。

Javascript

var text = "Zachary Hello my name is Zachary Sohovich. I'm a 20 year old dude from ZacharySouthern California and I loZacharyve to code Zachary",
textLength = text.length,
myName = "Zachary",
nameLength = myName.length,
check = true,
hits = 0,
i = 0,
j;

while (i < textLength) {
if (check) {
if (i !== 0) {
i += 1;
}

j = 0;
while (j < nameLength) {
if (text.charAt(i + j) !== myName.charAt(j)) {
break;
}

j += 1;
}

if (j === nameLength && (/\s/.test(text.charAt(i + j)) || i + j === textLength)) {
hits += 1;
i += j;
}
}

i += 1;
check = /\s/.test(text.charAt(i));
}

if (hits === 0) {
console.log("Your name was not found!");
} else {
console.log(hits);
}

关于 jsfiddle

注意:还有许多其他可能的解决方案可以为您做同样的事情。

关于javascript - 字符串方法精确文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17153907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com