[英]Extracting middle of string - JavaScript
我试图在 JavaScript 中为此编写一个算法,但我得到的 str.length 不是 function...
function extractMiddle(str) {
var position;
var length;
if(str.length() % 2 == 1) {
position = str.length() / 2;
length = 1;
} else {
position = str.length() / 2 - 1;
length = 2;
}
result = str.substring(position, position + length)
}
extractMiddle("handbananna");
因为字符串长度不是一个函数,它是一个属性。
function extractMiddle(str) {
var position;
var length;
if(str.length % 2 == 1) {
position = str.length / 2;
length = 1;
} else {
position = str.length / 2 - 1;
length = 2;
}
return str.substring(position, position + length)
}
console.log(extractMiddle("handbananna"));
这是执行此操作的另一种方法:
function extractMiddle(str) {
return str.substr(Math.ceil(str.length / 2 - 1), str.length % 2 === 0 ? 2 : 1);
}
// the most amazing const getMiddle = s => s.substr(s.length - 1 >>> 1, (~s.length & 1) + 1); // should return "dd" console.log(getMiddle('middle'))
// >>> 是无符号右移按位运算符。 它相当于除以 2,截断,只要字符串的长度不超过 Javascript 中整数的大小。
// 关于 ~ 运算符,让我们从表达式 n & 1 开始。这将告诉您整数 n 是否为奇数(它类似于逻辑与,但比较两个数字的所有位)。 如果整数为奇数,则表达式返回 1。 如果整数是偶数,则返回 0。
// 如果 n & 1 是偶数,则表达式返回 0。
// 如果 n & 1 是奇数,则表达式返回 1。
// ~n & 1 反转这两个结果,如果字符串的长度是奇数,则提供 0,如果字符串的长度是偶数,则提供 1。 ~ 运算符将整数中的所有位取反,因此 0 将变为 -1,1 将变为 -2,依此类推(前导位始终是符号)。
// 然后加一,如果字符串的长度是奇数,则得到 0+1 (1) 个字符,如果字符串的长度是偶数,则得到 1+1 (2) 个字符。
@作者 雅各布
源码链接是: https : //codepen.io/jacobwarduk/pen/yJpAmK
这似乎解决了它!
function extractMiddle(str) {
var position;
var length;
if(str.length % 2 == 1) {
position = str.length / 2;
length = 1;
} else {
position = str.length / 2 - 1;
length = 2;
}
result = str.substring(position, position + length)
console.log(result);
}
第一个'if'语句是得到奇数,而'else if'是得到偶数。
function getMiddle(s) { if (s.length % 2 == 1) { return s.substring((s.length / 2)+1, (s.length / 2)) } else if (s.length % 2 == 0) { return s.substring((s.length / 2)-1, (s.length / 2)+1) } } console.log(getMiddle("handers")); console.log(getMiddle("test"));
这是我的解决方案:-
这是我的解决方案
function getMiddle(s){
let middle = Math.floor(s.length/2);
return s.length % 2 === 0
? s.slice(middle-1, middle+1)
: s.slice(middle, middle+1);
}
function extractMiddle(s) {
return s.substr(Math.ceil(s.length / 2 - 1), s.length % 2 === 0 ? 2 : 1);
}
extractMiddle("handbananna");
str.length 是一个属性。 只需去掉括号即可。 示例:
if (str.length == 44) {
length
是字符串的属性,而不是函数。 改为这样做:
str.length % 2 === 1
另外,使用我建议偏爱===
不是==
由于 length 不是函数,因此无需使用 ()。
function getMiddle(str) {
if(str.length % 2 === 0 ) {
return str.substr(str.length/2-1, 2);
} else {
return str.charAt(Math.floor(str.length/2));
}
}
console.log(getMiddle("middbkbcdle"));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.