gpt4 book ai didi

javascript - 计算没有注释的字符

转载 作者:行者123 更新时间:2023-12-01 02:33:58 24 4
gpt4 key购买 nike

我正在尝试创建一个函数,可以计算字符串输入中的所有字符,但不计算任何注释(//或/*)

到目前为止,它与//之后的行完美配合。我将字符串按每个新行分割,并且仅计算不包含//

的行字符

这是到目前为止的代码:

function findComments() {

var string = document.getElementById("input").value;
var splittedString = string.split("\n");

var count = 0;

for (var i = 0; i < splittedString.length; i++) {
while (countStars) {
if(splittedString[i].indexOf("*/") > -1) {
countStars = false;
}
continue;
}

if(splittedString[i].indexOf("/*") > -1) {
var countStars = true;
}

if(splittedString[i].indexOf("//") === -1) {

var chars = splittedString[i].split("");
for (var j = 0; j < chars.length; j++) {
count++;
}
}

}
console.log(count);
}

正如我提到的,它应该继续循环,直到找到注释的结尾( */)。到目前为止这不起作用

非常感谢任何帮助! :)

最佳答案

 var inComment = false, count = 0;
for(const line of splittedStrings){
var end = -1;
if(inComment){
end = line.indexOf("*/");
if(end === -1){
count += line.length;
continue;
} else {
count += end;
inComment = false;
}
}
const single = line.indexOf("//", end);
const multi = line.indexOf("/*", end);
if(single + multi === -2) continue;
if(multi !== -1 && multi < single){
//got a multiline comment
inComment = true;
count += line.length - (multi + 2);
} else{
//got a single line comment
count += line.length - (single + 2);
}
}

如果您在多行评论中,只需保留一个标记即可

关于javascript - 计算没有注释的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48093630/

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