JSスニペット 文字列関連

随時追加

文字列から空白除去

string  = string .replace(/\s+/g, "");

文字列部分検索

var string  = 'abcdefg';
var pattern = 'fg';
if(string.indexOf(pattern) > -1){
  // 部分一致のときの処理
}

名前を空白除去でlist検索例

const imgList = [{"name":"山田 太郎","href":"yamada.jpg"},{"name":"田中 次郎","href":"tanaka.jpg"}];
const getTantouImg = (name)=>{
	name = name.replace(/\s+/g, "");
	for(const imgMap of imgList){
		let imgMapName =  imgMap.name.replace(/\s+/g, "");
		if(imgMapName.startsWith(name)){
			return imgMap.href;
		}
	}
	return "./img/nonimg.jpg";
}


URLエンコード・デコード


const uri = 'https://mozilla.org/?x=шеллы';
const encoded = encodeURI(uri);
console.log(encoded);
// expected output: "https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B"

try {
  console.log(decodeURI(encoded));
  // expected output: "https://mozilla.org/?x=шеллы"
} catch (e) { // catches a malformed URI
  console.error(e);
}



数値0埋め


var zeroPadding=(NUM, LEN)=>{
	return ( Array(LEN).join('0') + NUM ).slice( -LEN );
}



文字列の表示px幅取得・指定px幅までカット

印刷用に幅いっぱいに表示して、改行させたくなかったので
//計測用spanを生成するfont指定、サイズなどはcss_classでやって
var setRulerElement=(css_class)=>{
	let body = document.querySelector( "body" );
	span_element = document.createElement("span");
	span_element.setAttribute("id","ruler");
	span_element.setAttribute("style","visibility:hidden;position:absolute;white-space:nowrap;");
	span_element.setAttribute("class",css_class);
	body.appendChild(span_element);
}
//文字幅を測る
var  textWidth=(text)=> {

	  var ruler_element = document.getElementById("ruler");
	  ruler_element.innerHTML = text;
	  var width = ruler_element.offsetWidth;
	  ruler_element.innerHTML = "";
	  return width;
}
//幅に収まるまで文字を短くする
var maxTextWidth=(text,max_width)=>{
	let max_length = text.length;

	while(textWidth(text) > max_width){
		max_length--;
		text = text.substr(0, max_length);
		if(0 >= text.length){
			return "";
		}
	}
	return text;
}
setRulerElement();
//商品名を帳票の幅に収まるまで短くする
syouhin_name1 = maxTextWidth(syouhin_name1,355);


数字のカンマ区切り

金額等表示用に
const separate=(num)=>{
    // 文字列にする
    num = String(num);
    var len = num.length;
    // 再帰的に呼び出すよ
    if(len > 3){
        // 前半を引数に再帰呼び出し + 後半3桁
        return separate(num.substring(0,len-3))+','+num.substring(len-3);
    } else {
        return num;
    }
}

コメント

このブログの人気の投稿

ネットギア WiFi6 無線lan 法人向け メッシュ アクセスポイント WAX610の初期設定

Raspberry Pi 4 でデュアルディスプレイの拡張・複製

【更新】福祉施設向け事務用PC選定