Javascript 小工具, StringToArray(字串转数组) By shawl.qiu
说明:
顾名思义, 这个其实嘛, 就是把一字串转为数组, 并保留字串格式...
乍看之下, 貌似很简单, 不过真正弄起来, 可不是那么回事哦...
主要应用嘛, 效率问题... 总比拼接字串强...
shawl.qiu
2007-08-22
http://blog.csdn.net/btbtd
内容:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>String To Array - shawl.qiu template </title>
<style type="text/css">
/* <![CDATA[ */
/* ]]> */
</style>
<script type="text/javascript">
/*<![CDATA[*/
if ( navigator. appName == "Microsoft Internet Explorer" )
{
//最大化窗口
self. moveTo ( - 5, - 5 )
self. resizeTo ( screen. availWidth + 8, screen. availHeight + 8 )
//这个脚本定义的宽度其实比原窗口还要大那么一点.
}
/*]]*/
</script>
</head>
<body>
<form id="MainForm">
<p> 输入: <br />
<textarea cols="90%" rows="10" id="InputTxa"> if ckeckfile then
if fReTest(listForCheck, "/b"&sFlPox&"/b") then
for iArCkTemp=0 to uBound(tl_arCkFl)
'--------------------------------检测恶意代码
if inStrB(1, bnFileContent, tl_arCkFl(iArCkTemp), 1) <>0 then
if isArray(tl_arErrMaliceCode) then redim preserve _
tl_arErrMaliceCode(uBound(tl_arErrMaliceCode)+1) else redim tl_arErrMaliceCode(0)
tl_arErrMaliceCode(uBound(tl_arErrMaliceCode))=sFlNm
bFlag=false
exit for
end if
next
end if
end if
function fExtendObjASI(Obj, Set, sPrefix, iCount)
{// shawl.qiu code : void return
if(!Set) Set = [];
if(!iCount) iCount = 0;
if(!sPrefix) throw new Error("参数出错!");
Obj.Set = Set;
Obj.Marker = sPrefix;
Obj.Count = iCount;
} // end function fExtendObjASI(Obj, Set, sPrefix, iCount)
function fEncodeCode(Source, Obj, sPattern, sFlag)
{
if(!sFlag) sFlag = "g";
var Re = new RegExp(sPattern, sFlag);
Source[0] = Source[0]
.replace
(
Re
,function($0, $1)
{
Obj.Set.push($1);
//alert($1);
return Obj.Marker+(Obj.Count++);
}
);
} // end function fEncodeCode(Source, Obj, sPattern) </textarea>
</p> <p>
<input type="submit" id="Submiter" value="提交" />
<input type="reset" value="重置" />
</p>
<p>输出: <br />
<textarea cols="90%" rows="15" id="OutputTxa"> </textarea>
</p>
<p>默认空白:
<input type="text" id="DefaultSpaceTbx" value="2" style="width:24px;" />
<select id="SpaceSle">
<option value=" ">Space </option>
<option value=" ">Tab </option>
</select>
|
<input type="checkbox" value="checkbox" id="TrimCbx" />
:Trim
|
<input type="checkbox" value="checkbox" id="DebugCbx" /> : Debug
</p>
</form>
<script type="text/javascript">
/*<![CDATA[*/
var InputTxa = document. getElementById ( "InputTxa" );
var Submiter = document. getElementById ( "Submiter" );
var OutputTxa = document. getElementById ( "OutputTxa" );
var DefaultSpaceTbx = document. getElementById ( "DefaultSpaceTbx" );
var SpaceSle = document. getElementById ( "SpaceSle" );
var TrimCbx = document. getElementById ( "TrimCbx" );
var DebugCbx = document. getElementById ( "DebugCbx" );
Submiter. onclick =
function ( )
{
var TempStr = [ InputTxa. value ];
StringToArray
( TempStr, TrimCbx. checked, SpaceSle. value, DefaultSpaceTbx. value, DebugCbx. checked );
OutputTxa. value = TempStr;
return false;
};
function StringToArray ( Source, bTrim, sSpace, iSpaceLen, bDebug )
{ // shawl.qiu code : return string
var bStr = false;
if ( Source. constructor == String ) Source = [Source ], bStr = true;
if ( bTrim ) fStringTrim ( Source, false, "gm" );
var Debug = bDebug;
// escape string
var Count = 0;
var Comma = "";
var TempAr = [ ];
Source [ 0 ]. replace
(
/ ^ (. + )$ / gm,
function ( $0, $1 )
{
if ( Count > 0 ) Comma = ",";
$1 = $1. replace ( / /n/r|/r|/n / g, "" );
$1 = $1. replace ( //// g, "" );
$1 = $1. replace ( / " / g, "///"" );
$1 = [Comma, "/"", $1, "//n/"" ]. join ( "" );
TempAr. push ( $1 );
Count ++;
return $1;
}
);
Source [ 0 ] = TempAr. join ( "/n" );
// fix close script
Source [ 0 ] = Source [ 0 ]. replace ( / <//script> / gi, "<///script>" );
Source [ 0 ] = ["/[/n", Source, "/n/].join('');" ]. join ( "" );
var sUnshift = fStringSpace ( sSpace, parseInt ( iSpaceLen ) );
fUnshiftString ( Source, sUnshift );
if ( Debug ) fListCharcode ( Source );
if ( bStr ) return Source [ 0 ];
} // end function StringToArray(Source, bTrim, sSpace, iSpaceLen)
function fListCharcode ( Source )
{ // shawl.qiu code : return string
var bStr = false;
if ( Source. constructor == String ) Source = [Source ], bStr = true;
var Len = Source [ 0 ]. length;
var Ar = [ ];
var TempAr = [ ];
for ( var i =0; i <Len; i ++ )
{
var CurChar = Source [ 0 ]. charAt ( i );
//alert(CurChar)
Ar. push ( CurChar );
TempAr. push ( CurChar. charCodeAt ( ) );
if ( CurChar. charCodeAt ( ) == 10 || i === Len - 1 )
{
Ar. push ( TempAr. join ( "," ) );
Ar. push ( "/n" );
TempAr = [ ];
}
}
Source [ 0 ] = Ar. join ( "" );
if ( bStr ) return Source [ 0 ];
} // end function fListCharcode(Source)
function fStringSpace ( sStr, iTime )
{
var nLen = arguments. length;
if ( nLen === 0 )
{
sStr = ' '
iTime = 2;
}
if ( nLen == 1 )
{
sStr += ' ';
iTime = 2;
}
return new Array ( iTime + 1 ). join ( sStr );
} // end function fStringSpace
function fUnshiftString ( Source, sForUnshift )
{ // shawl.qiu code : return string
var bString = false;
if ( Source. constructor == String )
{
Source = [Source ];
bString = true;
}
Source [ 0 ] = Source [ 0 ]
. replace
(
/ ^ ( [/s/ S ] ) /gm
, sForUnshift + "$1"
);
if ( bString )
{
return Source [ 0 ];
}
} // end function fUnshiftString(Source, sForUnshift)
function fStringTrim ( Source, bLine, sFlag )
{ // shawl.qiu code : return string
if (! sFlag ) sFlag = "g";
var bString = false;
var Re = null;
if ( Source. constructor == String )
{
Source = [Source ];
bString = true;
}
if (! bLine )
{
if ( / m / i. test ( sFlag ) ) Re = new RegExp ( "^[^//r//n//S]+|[^//r//n//S]+$", sFlag );
else Re = new RegExp ( "^//s+|//s+$", sFlag );
Source [ 0 ] = Source [ 0 ]. replace ( Re, '' );
}
else
{
Re = new RegExp ( "^[^//n//S]*?//n|//s+$", sFlag );
Source [ 0 ] = Source [ 0 ]. replace ( Re, '' );
}
if ( bString ) return Source [ 0 ];
} // end function fStringTrim(Source)
/*]]*/
</script>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>String To Array - shawl.qiu template </title>
<style type="text/css">
/* <![CDATA[ */
/* ]]> */
</style>
<script type="text/javascript">
/*<![CDATA[*/
if ( navigator. appName == "Microsoft Internet Explorer" )
{
//最大化窗口
self. moveTo ( - 5, - 5 )
self. resizeTo ( screen. availWidth + 8, screen. availHeight + 8 )
//这个脚本定义的宽度其实比原窗口还要大那么一点.
}
/*]]*/
</script>
</head>
<body>
<form id="MainForm">
<p> 输入: <br />
<textarea cols="90%" rows="10" id="InputTxa"> if ckeckfile then
if fReTest(listForCheck, "/b"&sFlPox&"/b") then
for iArCkTemp=0 to uBound(tl_arCkFl)
'--------------------------------检测恶意代码
if inStrB(1, bnFileContent, tl_arCkFl(iArCkTemp), 1) <>0 then
if isArray(tl_arErrMaliceCode) then redim preserve _
tl_arErrMaliceCode(uBound(tl_arErrMaliceCode)+1) else redim tl_arErrMaliceCode(0)
tl_arErrMaliceCode(uBound(tl_arErrMaliceCode))=sFlNm
bFlag=false
exit for
end if
next
end if
end if
function fExtendObjASI(Obj, Set, sPrefix, iCount)
{// shawl.qiu code : void return
if(!Set) Set = [];
if(!iCount) iCount = 0;
if(!sPrefix) throw new Error("参数出错!");
Obj.Set = Set;
Obj.Marker = sPrefix;
Obj.Count = iCount;
} // end function fExtendObjASI(Obj, Set, sPrefix, iCount)
function fEncodeCode(Source, Obj, sPattern, sFlag)
{
if(!sFlag) sFlag = "g";
var Re = new RegExp(sPattern, sFlag);
Source[0] = Source[0]
.replace
(
Re
,function($0, $1)
{
Obj.Set.push($1);
//alert($1);
return Obj.Marker+(Obj.Count++);
}
);
} // end function fEncodeCode(Source, Obj, sPattern) </textarea>
</p> <p>
<input type="submit" id="Submiter" value="提交" />
<input type="reset" value="重置" />
</p>
<p>输出: <br />
<textarea cols="90%" rows="15" id="OutputTxa"> </textarea>
</p>
<p>默认空白:
<input type="text" id="DefaultSpaceTbx" value="2" style="width:24px;" />
<select id="SpaceSle">
<option value=" ">Space </option>
<option value=" ">Tab </option>
</select>
|
<input type="checkbox" value="checkbox" id="TrimCbx" />
:Trim
|
<input type="checkbox" value="checkbox" id="DebugCbx" /> : Debug
</p>
</form>
<script type="text/javascript">
/*<![CDATA[*/
var InputTxa = document. getElementById ( "InputTxa" );
var Submiter = document. getElementById ( "Submiter" );
var OutputTxa = document. getElementById ( "OutputTxa" );
var DefaultSpaceTbx = document. getElementById ( "DefaultSpaceTbx" );
var SpaceSle = document. getElementById ( "SpaceSle" );
var TrimCbx = document. getElementById ( "TrimCbx" );
var DebugCbx = document. getElementById ( "DebugCbx" );
Submiter. onclick =
function ( )
{
var TempStr = [ InputTxa. value ];
StringToArray
( TempStr, TrimCbx. checked, SpaceSle. value, DefaultSpaceTbx. value, DebugCbx. checked );
OutputTxa. value = TempStr;
return false;
};
function StringToArray ( Source, bTrim, sSpace, iSpaceLen, bDebug )
{ // shawl.qiu code : return string
var bStr = false;
if ( Source. constructor == String ) Source = [Source ], bStr = true;
if ( bTrim ) fStringTrim ( Source, false, "gm" );
var Debug = bDebug;
// escape string
var Count = 0;
var Comma = "";
var TempAr = [ ];
Source [ 0 ]. replace
(
/ ^ (. + )$ / gm,
function ( $0, $1 )
{
if ( Count > 0 ) Comma = ",";
$1 = $1. replace ( / /n/r|/r|/n / g, "" );
$1 = $1. replace ( //// g, "" );
$1 = $1. replace ( / " / g, "///"" );
$1 = [Comma, "/"", $1, "//n/"" ]. join ( "" );
TempAr. push ( $1 );
Count ++;
return $1;
}
);
Source [ 0 ] = TempAr. join ( "/n" );
// fix close script
Source [ 0 ] = Source [ 0 ]. replace ( / <//script> / gi, "<///script>" );
Source [ 0 ] = ["/[/n", Source, "/n/].join('');" ]. join ( "" );
var sUnshift = fStringSpace ( sSpace, parseInt ( iSpaceLen ) );
fUnshiftString ( Source, sUnshift );
if ( Debug ) fListCharcode ( Source );
if ( bStr ) return Source [ 0 ];
} // end function StringToArray(Source, bTrim, sSpace, iSpaceLen)
function fListCharcode ( Source )
{ // shawl.qiu code : return string
var bStr = false;
if ( Source. constructor == String ) Source = [Source ], bStr = true;
var Len = Source [ 0 ]. length;
var Ar = [ ];
var TempAr = [ ];
for ( var i =0; i <Len; i ++ )
{
var CurChar = Source [ 0 ]. charAt ( i );
//alert(CurChar)
Ar. push ( CurChar );
TempAr. push ( CurChar. charCodeAt ( ) );
if ( CurChar. charCodeAt ( ) == 10 || i === Len - 1 )
{
Ar. push ( TempAr. join ( "," ) );
Ar. push ( "/n" );
TempAr = [ ];
}
}
Source [ 0 ] = Ar. join ( "" );
if ( bStr ) return Source [ 0 ];
} // end function fListCharcode(Source)
function fStringSpace ( sStr, iTime )
{
var nLen = arguments. length;
if ( nLen === 0 )
{
sStr = ' '
iTime = 2;
}
if ( nLen == 1 )
{
sStr += ' ';
iTime = 2;
}
return new Array ( iTime + 1 ). join ( sStr );
} // end function fStringSpace
function fUnshiftString ( Source, sForUnshift )
{ // shawl.qiu code : return string
var bString = false;
if ( Source. constructor == String )
{
Source = [Source ];
bString = true;
}
Source [ 0 ] = Source [ 0 ]
. replace
(
/ ^ ( [/s/ S ] ) /gm
, sForUnshift + "$1"
);
if ( bString )
{
return Source [ 0 ];
}
} // end function fUnshiftString(Source, sForUnshift)
function fStringTrim ( Source, bLine, sFlag )
{ // shawl.qiu code : return string
if (! sFlag ) sFlag = "g";
var bString = false;
var Re = null;
if ( Source. constructor == String )
{
Source = [Source ];
bString = true;
}
if (! bLine )
{
if ( / m / i. test ( sFlag ) ) Re = new RegExp ( "^[^//r//n//S]+|[^//r//n//S]+$", sFlag );
else Re = new RegExp ( "^//s+|//s+$", sFlag );
Source [ 0 ] = Source [ 0 ]. replace ( Re, '' );
}
else
{
Re = new RegExp ( "^[^//n//S]*?//n|//s+$", sFlag );
Source [ 0 ] = Source [ 0 ]. replace ( Re, '' );
}
if ( bString ) return Source [ 0 ];
} // end function fStringTrim(Source)
/*]]*/
</script>
</body>
</html>