Skip to content

Instantly share code, notes, and snippets.

@doxas
Created August 13, 2018 10:14
Show Gist options
  • Save doxas/53f2baf8574361cbe2c2d1ab5f948a0c to your computer and use it in GitHub Desktop.
Save doxas/53f2baf8574361cbe2c2d1ab5f948a0c to your computer and use it in GitHub Desktop.
function checkExistsFile(a, b){
// 空白等が指定されていないか
if(a == null || a === '' || b == null || b === ''){return false;}
let arrA = Array.from(a);
let arrB = Array.from(b);
// サロゲートペアを考慮した上での文字数が一致しているか
if(arrA.length === 0 || arrA.length !== arrB.length || arrB.length === 0){return false;}
// ループで位置文字ずつ一致状況を調べる
let flag = true;
for(let i = 0; i < arrA.length; ++i){
let mulA = arrA[i].match(/[\x01-\x7E]/) == null;
let mulB = arrB[i].match(/[\x01-\x7E]/) == null;
// 全角同士、あるいは半角同士であるか
if(mulA !== mulB){return false;}
// 全角同士なら半角に変換する
if(mulA === true){
arrA[i] = String.fromCharCode(arrA[i].charCodeAt(0) - 0xFEE0);
arrB[i] = String.fromCharCode(arrB[i].charCodeAt(0) - 0xFEE0);
}
// 大文字に統一する
arrA[i] = arrA[i].toUpperCase();
arrB[i] = arrB[i].toUpperCase();
// 最終一致確認
flag = flag && (arrA[i] === arrB[i]);
if(flag !== true){return false;}
}
// ここまで return しなかったということは一致しているとみなせる
return true;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment