JavaScriptは簡体字変換を実現します.

6891 ワード

/**

 *        

 * @param {string} text

 * @param {string} to       ” “ ” “

 * @return {string}

 */

var transformTo = (function(){

	var simplified = '                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ',

		traditional= '                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ';

	return function(text, to){

		//     null, undefined, NaN, '',       

		if((!text || !text.trim()) &&

			(!to || !to.trim())){

			return;

		}

		var fromChar, toChar, index,		

			from = (to === ' ') ? traditional : simplified,

			to = (to === ' ') ? simplified : traditional;

		

		for(var i = 0, len = text.length; i < len; i++){

			fromChar = text.charAt(i);

			index = from.indexOf(fromChar);

			if(index !== -1){

				toChar = to.charAt(index);

				text = text.replace(new RegExp(fromChar, 'g'), toChar);    //1

			}

		}

		return text;                                //2

	}

})();



//     

var name = '   ';

console.log(transformTo(name, ' '));

ここには2つの注意点があります.コードがすでに表示されている1と2:
1.replace方法は元の文字列を修正しないので、text=を追加しないと、毎回変えたのと同じです.次は消えます.
2.returnが必要なのは、stringが基本的なタイプなので、引用ではなく値を伝えます. tranformTo(new String('周杰倫')、'繁')は引用ですが、このように書く人は少ないでしょう.残念ながら、たとえ引用しても、replace()は基本タイプのstringに戻るので、最終的にはreturn textが必要です.
第二の点について、例を挙げて証明します.
var jay1 = '   ',

	jay2 = new String('   ');

function fun(str){

	str.toString = function(){

		return '  jay!';

	}

}

//  

fun(jay1);

jay1.toString();

//Firebug   "   ",  toString()    



//   

fun(jay2);

jay2.toString();

//Firebug   "  jay!",  toString()    
//replace()       

var name = new String('110');

typeof name.replace(/0/, '1');  //  string,  object!
 
性能の方面はまだ考慮していないで、達人が意見を出すことができることを望みます!