gpt4 book ai didi

javascript - 使用此 .length & .split() 的任何替代方法?

转载 作者:行者123 更新时间:2023-11-29 23:19:34 24 4
gpt4 key购买 nike

我想在不使用 .split() 的情况下拆分 textBox 的下部、上部和值,我也想要在不使用 .length 的情况下查找字符串的长度。任何人都可以解决我的问题我试过但是我找不到这个问题的确切逻辑。

var lowercase = "abcdefghijklmnopqrstuvwxyz";
var uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

function Print() {
var input = document.getElementById('demo').value;
document.write(document.getElementById('demo1').innerHTML = toUpper(input));

}

function toUpper(input) {
var upperCase = uppercase.split(""); //other way to split uppercase
var lowerCase = lowercase.split(""); //other way to split lowercase
var inputText = input.split(""); //other way to split input
var newText = "";
var found;

for (var i = 0; i < inputText.length; i++) { //not using .length to other way to find the size of inputText
found = false;
for (var ctr = 0; ctr < lowerCase.length; ctr++) { //not using .length other way to find the size of lowerCase
if (inputText[i] == lowerCase[ctr]) {
found = true;
break;
}
}
if (found) { //true
newText = newText + upperCase[ctr];

} else {
newText = newText + inputText[i];
}
}
return newText;
}

最佳答案

您可以使用数组函数 reduce 计算字符串的长度。

Reduce 遍历数组中的所有元素并执行您提供的函数以将其减少为一个值,您可以阅读更多 here .要减少对字符串的处理,您需要使用 Array.from,如下所示:

Array.from(lowerCase).reduce((sum, carry) => sum + 1, 0) // 26

Reduce 接受一个起始参数,我们在这里将其设置为零。

这样您就不需要使用拆分或长度函数。

您也不需要检查输入是否为字符串,您可以使用 charCodeAt() 和 fromCharCode()。

如果您获取输入并使用 Array.from() 然后使用 forEach 循环遍历它,您可以获得如下所示的内容:

    function print() {
const input = document.querySelector('#input').value;

document.querySelector('#target').value = stringToUpper(input);
}

function stringToUpper(input) {
let output = "";

Array.from(input).forEach(char => output += charToUpper(char));

return output;
}

function charToUpper(char) {
let code = char.charCodeAt(0);

code >= 97 && code <= 122 ? code -= 32 : code;

return String.fromCharCode(code);
}
<div>
<input id="input" placeholder="enter text here">
</div>
<button onclick="print()">To Upper</button>
<div>
<input id="target">
</div>

关键行是我们获取输出并向其添加字符(如上)的地方:

output += charToUpper(char)

如果你不知道箭头函数,你可以阅读更多here

这一行:

        code >= 97 && code <= 122 ? code -= 32 : code;

只是检查字符是否为小写(97 到 122 之间的数字),如果是,则减去 32 使其变为大写。

它是减法而不是加法的原因是在 utf-16 中,字符的布局如下:

ABCDEFGHIJKLMNOPQRTUWXYZabcdefghijklmnopqrtuwxyz

参见 here更多

关于javascript - 使用此 .length & .split() 的任何替代方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51224347/

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