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;
}
}
コメント
コメントを投稿