去除字符串首尾空格(全角&半角)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zSY_snake/article/details/80352268

非正则表达式:

全角空格Unicode编码为:12288

半角空格Unicode编码为:32

大概思路是:

1.利用Unicode编码从首尾分别开始遍历字符串,找到第一个非空格的位置索引

2.利用String对象的substring()方法从字符串中截取步骤1中获取的非空格起始结束索引值间的子串

substring()方法:

截取字符串片段,两个参数,第一个参数为截取片段的起始位置,第二个参数为截取片段的结束位置

emmmmm。。。。。两个参数的截取区间可以看做 [start,end) 前闭后开

function diyTrim(str) {
		    var result = "";
		    let start; //非空起始位置
		    let end;   //非空终止位置
		    //注意全角和半角!!!!
		    //全角空格 Unicode编码 12288
		    //半角空格 Unicode编码 32
		     for(let i=0;i<str.length;i++){
		    	if((str.charCodeAt(i) != 12288)&&(str.charCodeAt(i) != 32) ){
		    		// console.log(i);
		    		start = i;
		    		break;
		    	}
		    }
		    for(let i=str.length-1;i>=0;i--){
		    	if((str.charCodeAt(i) != 12288)&&(str.charCodeAt(i) != 32) ){
		    		end = i+1;
		    		break;
		    	}
		    }
		    result = str.substring(start,end);

		    return result
		}

		// 测试用例
		console.log(diyTrim(' a f b    ')); // ->a f b
		console.log(diyTrim('    ffdaf    ')); // ->ffdaf
		console.log(diyTrim('1    ')); // ->1
		console.log(diyTrim('  f')); // ->f
		console.log(diyTrim('     a f b    ')); // ->a f b
		console.log(diyTrim(' ')); // ->
		console.log(diyTrim(' ')); // ->
		console.log(diyTrim('')); // ->

正则表达式:

var str = '  djd  jdj  ';
var re = /\s+/g;
var n = str.replace(re,"");
console.log(n);

 

展开阅读全文

全角空格半角空格??????

09-22

我从数据库中抽出的字段中可能有全角的字符也有半角的字符,要求如果此字段没有和其定义的字段的长度相等,就在其字段的后补足全角空格,rnrn例如rnname varchar(50)rnrn1,name="a",rnrn就应该补足24个全角的空格和一个半角的空格rnrn2,name="ab",rnrn就应该补足24个全角的空格rnrn请各位大哥帮忙解决以下,我写了一个函数,但不能解决1,name="a"的情况,我是菜鸟,能否提供更好的解决办法,谢谢!rn(1)char * str_Io_P /* 为要转换的字符串 */rn(2)int li_Dem_Len /* 要求的长度,就是字段的长度 */rn(3)int li_SelFlag /* 是全角转换还是半角转换 */rnrnvoid Add_Space_ ( char * str_Io_P, int li_Dem_Len, int li_SelFlag )rnrn if ( (li_SelFlag == BATCH_SEL_1 || li_SelFlag == BATCH_SEL_2)rnrn && str_Io_P != NULL rn && ( li_Dem_Len >= 0 || li_Dem_Len <= MAX_BUFFER_LEN ))rn rn /* •Ï”’è‹` */rn int li_Count = 0 ;rn int li_True_Len = 0 ;rn char lc_str[MAX_BUFFER_LEN] ;rn char * w_Temp_P = NULL;rnrn /* €–Ú’l‰Šú‰»‚Ɛݒ菈— */rn memset( lc_str ,0x00, MAX_BUFFER_LEN ) ;rn w_Temp_P = str_Io_P + li_Dem_Len - 1 ;rn while ( *w_Temp_P == 0x20 )rn rn w_Temp_P--;rn rn strncpy( lc_str, str_Io_P, w_Temp_P- str_Io_P + 1) ;rn li_True_Len = strlen( lc_str );rn /* Œ‹‰ÊÝ’菈— */rn if ( li_True_Len != li_Dem_Len )rn rn /* FULL SPACE‚ðÝ’è‚·‚éB */rn if ( li_SelFlag == BATCH_SEL_1 )rn rn li_True_Len = (int)ceil((double)( li_Dem_Len - li_True_Len ) / 2);rnrn for ( li_Count = 0;li_Count < li_True_Len ; li_Count++ )rn rn strcat( lc_str, "@" ) ;rn rn rn /* Half SPACE‚ðÝ’è‚·‚éB */rn else if ( li_SelFlag == BATCH_SEL_2 ) rn rn li_True_Len = li_Dem_Len - li_True_Len ;rn for ( li_Count = 0; li_Count < li_True_Len ; li_Count++ )rn rn strcat( lc_str, " " ) ;rn rn rn sprintf( str_Io_P, "%s", lc_str ) ;rn rn rnrnrnrnrnrnrn 论坛

没有更多推荐了,返回首页