charCodeAtを使用して基本的な機能を実装する方法について

1637 ワード

これはStringの1つの方法で、それを使って方法を返して0から65535の間の整数を返すことができて、その中の前の128ビットはASCII符号化で、ここで符号化の問題について展開しないで、本文は前の128ビットの範囲にASCII符号を制限していくつかのよく使う文字を格納して、例えば字母、数字、スペースなど、これらの文字は連続しています.だから、これに基づいて文字列を簡単に操作して、文字列の中の数字を取得することができます.どのように数字を取得しますか.数字の範囲は48-57で、そのうち48は0、57は9を表しています.だから、文字列の中の数字をどのように得るかを書くことができます.コードは以下の通りです.
function getNum(str){
    return +[...str].filter((item)=>{
        return item.charCodeAt(0)>47 && item.charCodeAt(0)<58
    }).join('')
}

その中の+号は文字列を数字に変換して、変換に失敗したらNaNを返して、...ES 6の書き方です.spread演算子と言います.こちらは文字列を配列に変換しています.配列をマージすることもできます.コアはfilterにあります.文字のcodeが47から58を満たす限り、数字はどうですか.簡単ではありませんか.実は覚えなければならないものがあります.その値の範囲です.コードを最適化することができます.
function getNum(str){
    return +[...str].filter((item)=>{
        return item.charCodeAt(0)>='0'.charCodeAt(0) && item.charCodeAt(0)<='9'.charCodeAt(0)
    }).join('')
}

すなわち0以上の符号化と9以下の符号化であればよいが,次に,スペースの除去,大文字の取得,小文字の取得などを実現すると簡単である.
//  
function trim(str){
    return [...str].filter((item)=>{
        return item.charCodeAt(0) != ' '.charCodeAt(0)
    }).join('')
}
//  
function getLowerCase(str){
    return [...str].filter((item)=>{
        return item.charCodeAt(0)>='a'.charCodeAt(0) && item.charCodeAt(0)<='z'.charCodeAt(0)
    }).join('')
}
//  
function getUpperCase(str){
    return [...str].filter((item)=>{
        return item.charCodeAt(0)>='A'.charCodeAt(0) && item.charCodeAt(0)<='Z'.charCodeAt(0)
    }).join('')
}