提取字符串的中间部分 - JavaScript

By simon at 2018-02-28 • 0人收藏 • 35人看过

我正在尝试为JavaScript编写一个算法,但我得到了一个 str.length不是一个函数...

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");

6 个回复 | 最后更新于 2018-02-28
2018-02-28   #1

因为字符串长度不是函数,所以它是一个属性。

 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"));

2018-02-28   #2

str.length是一个属性。只是摆脱括号。例:

if (str.length == 44) {

2018-02-28   #3

因为字符串长度不是函数,所以它是一个属性。

 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"));

2018-02-28   #4

这似乎解决了它!

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);
} https://jsfiddle.net/sd4z711y/

2018-02-28   #5

length是字符串的属性,不是函数。改为: str.length % 2 === 1 另外,使用我建议倾向=== over ==

2018-02-28   #6

// the most amazing

const getMiddle = s => s.substr(s.length - 1 >>> 1, (~s.length & 1) + 1);
// >>>是一个无符号的右移位运算符。这相当于 除以2,截断,只要the字符串的长度不是 超过Javascript中整数的大小。 //关于〜操作符,让我们从第一个开始e表达n&1 \。这个 会告诉你一个整数n是否是奇数(它类似于逻辑和,但是 比较所有的位两个数字)。如果一个表达式返回1 整数是奇数。如果一个整数是偶数,它将返回0。 //如果n&1是偶数,那么expression返回0。 //如果n&1是奇数,则表达式返回1。 //〜n&1反转这两个结果,如果长度为0,则返回0h的字符串 很奇怪,如果刺的长度是偶数,则为1。 〜运算符全部反转 在一个整数中的位,所以0 would变成-1,1变成-2,依此类推 (首位总是符号)。 //然后你添加一个,并且你得到0 + 1(1)charac如果长度的话 如果字符串的长度是偶数,则字符串为奇数,或1 + 1(2)个字符。 @ jacobb作者

登录后方可回帖

Loading...