1. 先说一下String类是什么~

String类的对象不等同于字符串,"abc"与new String("abc")是不同的,当你使用String类操作字符串的时候,脚本解释器会自动将字符串转换成一个临时String对象,然后再调用String类的方法,然后会放弃该临时String对象,甚至可以在字符串中直接查看属性,String.length来查看长度,所以一般没人使用他的构造函数new String("哈哈~好傻哦")这样 ,而是直接操作字符串。所以我们说String类是字符串原始数据类型的一个包装。

2. 再说一下String类的属性

String类只有一个属性那就是String.length ,我们可以试一下~
trace("abcde".length);
trace("12345".length);
trace("<#.,?".length);
trace("换成中文呢".length);
trace(" ".length);
trace("a1<换 ".length);
以上输出的通通都是5
说明无论英文中文数字还是符号或者空格都按一个字符算,这样方便我们索引了,因为所有字符串的索引都是从0的,所以所有的字符串的最后一个字符都是这个字符串.length-1

3. 下边是方法拉

*合并字符串:

my_str.concat(参数1,参数2,参数3...)
这个方法能把字符串my_str和所有的参数合并成一个字符串,但不会改变my_str的值,而是返回一个新的字符串。下边试一下
a="我是a"
b="我是b"
c="我是c"
abc=a.concat(b,c)
trace(abc)
输出面版会输出:我是a我是b我是c

*把ASCII码转成字符

以前都是用这个chr(number),比如trace(chr(64)) ,输出:@
不过现在不推荐使用了而推荐使用String类的String.fromCharCode(参数1,参数2,...)
使用这个的好处好象只有可以接受多个参数,例如:
trace(String.fromCharCode(78,83,72,69,78)) //输出:NSHEN
键盘上每一个键都对应一个ASCII码,具体什么对应什么查一下键位表就知道了。
下边这里是输出26个英文字母~
for(var i=65;i<=90;i++){
  trace(String.fromCharCode(i))
  }

*截取字符(串)~

有两个方法~先说第一个
String.slice(开始索引,结束索引+1)~很简单,上边说过,记住索引是从0开始的一直到String.length - 1~试一下吧
trace("ABCDEFGHIJKLMNOPQRSTUVWXYZ".slice(0,3)) //输出:ABC
如果不写后一个参数,后一个参数默认为String.length
如果参数是负数,则表示从后边开始向前数,最后一个字符为-1
还有一个方法
String.substr(开始索引,截取长度)
trace("ABCDEFGHIJKLMNOPQRSTUVWXYZ".substr(0,5))//输出ABCDE
//----------------------------------------------------------
除了上边的4个方法 concat()、fromCharCode()、slice() 和 substr() 之外,String 对象的所有其它方法都是通用方法。这意味着这些方法本身先调用 this.toString(),然后再执行它们的操作,而且您可以将这些方法用于其它非 String 对象。

*搜索字符串中的子字符串

String.indexOf(要搜索的字符串,开始位置)
String.lastIndexOf(要搜索的字符串,开始位置)
两个方法,都是搜索字符串中的要搜索字符,搜到第一个匹配项并返回位置,搜不到就会返回-1,不同的是第一个是从左向右搜索,第二个却是从右向左搜索,试一下
trace("ABCDEFGABCDEFG".indexOf("D")) //输出:3
trace("ABCDEFGABCDEFG".indexOf("DEFG")) // 输出:3
trace("ABCDEFGABCDEFG".indexOf("找不到找不到~"))//输出:-1
trace("ABCDEFGABCDEFG".lastIndexOf("D")) //输出:10
trace("ABCDEFGABCDEFG".lastIndexOf("DEFG"))//输出:10
trace("ABCDEFGABCDEFG".lastIndexOf("找不到找不到~"))//输出:-1

*转换字母大小写~

String.toLowerCase()
String.toUpperCase()
两个函数很简单,直接看例子
myStr="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
trace(myStr.toLowerCase()) //输出:abcdefghijklmnopqrstuvwxyz
trace(myStr) //输出:ABCDEFGHIJKLMNOPQRSTUVWXYZ
说明这个函数只是返回副本,并不会改变原来的字符串!
另一个类似不说了~~

*最后一个方法了,转字符串为数组!

String.split(分隔符号,放入数组的个数)
第2个参数是可选的,可以不用 ,看例子
my_str = "ABCDEFG";
i = my_str.split(""); //如果分割符号是“”空的话,每个字符都被看为单独一个~
trace (i); //输出:A,B,C,D,E,F,G
j= my_str.split("",3)
trace(j) //输出:A,B,C

*super-tomato大大给我们扩展了一个trim()方法,用来删除字符串前后的多余空格!


先了解一下,有三种空格!
Acsii码分别为:

32 英文空格
9 Tab空格
12288 中文双字节


研究一下吧,代码如下:

String.prototype.trim = function() {
 for(var i=0; i<this.length; i++) {
 if(this.substr(i, 1).charCodeAt() > 32 && this.substr(i, 1).charCodeAt() != 12288) {
 this = this.substr(i, this.length);
 break;
 }
 }
 for(var i=this.length-1; i>=0; i--) {
 if(this.substr(i, 1).charCodeAt() > 32 && this.substr(i, 1).charCodeAt() != 12288) {
 this = this.substring(0, i+1);
 break;
 }
 }
 return this;
}
var test = "\t \n a \t\n";
trace(test.trim());


基本原理就是除空格以外截取子字符串,从左边向右截一遍,从右边再向左截一遍,最后返回结果

posted @ 2005-11-25 16:56 大力 阅读(292) 评论(0) 编辑

  在我们对VS.Net中的水晶报表(Crystal Reports)进行研究之前,我和我朋友对如何将这个复杂的东东加入我们的Web应用有着非常的好奇心。一周以后,在阅读了大量的“HOWTO”文档之后,我们成功地将一些简单的报告加入到了我们的Asp.net程序中,并得到了一些小决窍。
  这篇文章教你如何在.Net Web应用中使用水晶报表,也可以让你在学习过程中少走一些弯路。为了得到最好的效果,读者最好需要有一些基础的Asp.Net访问数据库的知识以及使用VS.Net的开发经验。
  简介
  水晶报表可以由很多的方法得到,其中一个就是使用VS.Net来创建,它提供了非常丰富模型以使我们能够在运行时操作属性和方法。如果你正在使用VS.Net开发.Net程序,那么你就不需要再安装其它软件了,因为他已经内嵌在VS.Net中了。
  优点:
  VS.Net水晶报表有下面一些主要的优点:


快速的报表开发

能够导出成为复杂的交互性图表

可以与其它控件一起在WebForm中使用

能够动态地将报表导出成为.pdf,.doc,xls,html,rtf等多种格式  

  结构:
  一些组件组成了水晶报表的二层结构,需要的Web应用有:
  客户端 :
  客户端仅需要一个可以访问嵌入aspx页面报表的游览器就可以了
  服务器 :
    水晶报表引擎(Crystal Report Engine (CREngine.dll))
  通过它可以完成一些任务,如在报告文件中合并数据,转换报告为其它格式等。也正是因为报告引擎的作用,才可以将Asp.Net中的水晶报表转换成为普通HTML格式
  水晶报表设计器(Crystal Report Designer (CRDesigner.dll))
  水晶报表就是在设计器中创建的,在设计器中你可以设计标题,插入数据,公式,图表,子报表等。
    .rpt报表文件
  执行报表中的第一步就是在水晶报表设计器接口创建此报表,在默认安装中微软已经提供了一些现成的.rpt例子。
    Data Source
    .rpt文件取得数据库的方法取决于你方法的选择,你能选择让水晶报表自己选择数据而不使用任何代码或者也可以选择手动的组装DataSet,然后再将其传送到报表文件。
  水晶报表查看控件(Crystal Report Viewer web form Control (CRWebFormViewer.dll))
  水晶报表查看控件是一个WebForm控件,可以将它看成是一个在.aspx页面中存放报表的容器。  注意:在一些复杂的操作中,报表服务器与Web服务器可能不在同一物理主机上,Web服务器将HTTP请求传送到报表服务器上去。水晶报表也可以当做WebService来执行。
  执行模式
  水晶报表取数据可以使用下面的方法实现:
  Pull 模式:
  被请求时,水晶报表直接根据指定的驱动连接数据库然后组装这些数据。
  Push 模式 :
  此时开发表不得不自己编写代码连接数据并组装DataSet,同时将它传送至报表。在些这种情况下,通过使用连接共享以及限制记录集合的大小,可以使用报表性能最大化。
     报表类型:
  水晶报表设计器能够直接包含报表至工程也能够使用独立的报表对象。
  Strongly-typed 报表 :
  当你将报表文件加入到项目中去时,它就变成了一个了“ strongly-typed“报表。在这些情况下,你将拥有直接创建报表的对象的权力,这将减少一些代码并且能够提供一些性能。
  Un-Typed 报表 :
  这里的报表并不直接包含在项目中,因此称为‘un-typed’ 报表。在这种情况下,你不得不使用水晶报表的”ReportDocuemt“对象建立一个实例,并且”手动“地凋用报表。
    其它注意事项
  尽管水晶报表查看器拥有一些很酷的功能,如缩放、页面导航等。但是他不提供打印功能,你不得不调用游览器的打印功能。
  VS.Net中的水晶报表如果没有注册,那么它只能使用30次,30次后,”保存“功能就不能再使用了。为了避免这个,你不是不在 http://www.crystaldecisions.com/这里注册此产品。 (好像不是这样子的,不注册也好像能用很长的时间,只是不能提供支持)
  默认安装的水晶报表只能支持5个用户,为了支持更多的用户,你不得不在 http://www.crystaldecisions.com/中购买许可证。
让我们感受一下----在Asp.net中使用一个现成的水晶报表文件

  让我们先感受一下在WebForm中使用水晶报表的感觉。   
1) 从WebForm工具栏中拖动水晶报表查看器控件(Crystal Report Viewer)至.aspx页面中。

  

  2) 调出水晶报表查看器控件的属性窗口  
  3) 点击[...]按钮查看"Data Binding"属性,并弹出了DataBinding窗口。
  4)  从左边的"Bindable属性”区中选择“Report Source”
  5) 选中"自定义绑定表达式"单选按钮,在右边的底部的窗口中指定.rpt文件的文件名和路径,例如:"C:\\Program Files\\Microsoft Visual Studio.NET\\Crystal Reports\\Samples\\Reports\\General Business\\World Sales Report.rpt",然后”确定“
   

  注意:文件”World Sales Report.rpt“文件是在VS.Net安装时创建的。如果你在安装过程中指定了其它目录,此时你最好确认一下路径的正确性。
  上面的步骤中实际上是插入了下面这些代码至Asp.Net文件中: <%@ Register TagPrefix="cr" Namespace="CrystalDecisions.Web" Assembly="CrystalDecisions.Web" %>


  以及: <CR:CRYSTALREPORTVIEWER>
   id="CrystalReportViewer1"
   runat="server" Width="350px" Height="50px"
   ReportSource=' <%# "C:\\Program Files\\Microsoft Visual Studio.NET\\Crystal Reports\\Samples\\Reports\\General Business\\World Sales Report.rpt" %>'>
  </CR:CRYSTALREPORTVIEWER>


   注意:在飞刀我的VS.Net正式版中自动生成的代码中ReportSource产生的样式不是这样子的,它是: ReportSource=" <%# C:\xxxxx\xxx.rpt %>" 


  这样是错误的,会出现错误信息,有两处错误:
DataBind中要有双引号,因此外部只能用单引号
目录分隔符号不能使用"\",必须使用"\\"

  必须按照使用本文介绍的格式来手动修改,这也算是VS.Net的一个Bug吧。
  6) 在Page_Load方法中调用DataBind方法。(代码为VB.Net)


Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
DataBind()
End Sub 


  7)保存并编译你的页面。 现在,你就有一个内嵌水晶报表的WebForm页面了。
  注意:实际开发中,一开始会出现无法访问inetsrv目录的错误,解决的办法是改变其目录的安全属性,使User用户有可写的权限。飞刀我发现.Net系统自已给出的解决方法是没有用的,也可能是我使用的是Windows.Net操作系统的原因。  
 

posted @ 2005-11-25 12:31 大力 阅读(366) 评论(1) 编辑