当前位置:  编程技术>综合
本页文章导读:
    ▪字符和字符串(C#)      1.字符类Char的使用 1.1 Char类概述        Char在C#中表示一个Unicode字符,正是这些Unicode字符构成了字符串。Unicode字符是目前计算机通用的字符编码,它可满足跨语言、跨平.........
    ▪第六章 普通网格报表(续)      6.2 数据项的过滤 通常情况下数据源中会含有大量数据,而一张报表会根据用户的需要展示其中的一小部分。这时您需要使用筛选来选择用户需要的数据,比如在显示客户信息表时,我们.........
    ▪std::string::replace使用小计      ctrl+c / ctrl+v 真是害死人,看起来简单的东西,往往却又很容易出问题 究其原因,还在于只知其表不知其里,容易想当然。 今天遇到的问题是简单调用string::replace替换子串的问题,如.........

[1]字符和字符串(C#)
    来源: 互联网  发布时间: 2013-11-10
1.字符类Char的使用 1.1 Char类概述

       Char在C#中表示一个Unicode字符,正是这些Unicode字符构成了字符串。Unicode字符是目前计算机通用的字符编码,它可满足跨语言、跨平台的文本转换、处理的要求。

       它的定义非常简单:

      char ch1=’L’;
1.2 Char类的使用

 

  方     法

              说           明

IsControl

指示指定的unicode字符是否属于控制字符类别

IsDigit

指示某个unicode字符是否属于十进制数字类别

IsHighSurrogate

指示指定的char对象是否为高代理项

IsLetter

指示某个unicode字符是否属于字母类别

IsLetterOrDigit

指示某个unicode字符是否属于字母类别还是属于十进制数字类别

IsLower

指示某个unicode字符是否属于小写字母类别

IsLowerSurrogate

指示指定的char对象是否为低代理项

IsNumber

指示某个unicode字符是否属于数字类别

IsPunctuation

指示某个unicode字符是否属于标点符号类别

IsSeparator

指示某个unicode字符是否属于分割符类别

IsSurrogate

指示某个unicode字符是否属于代理项字符类别

IsSurrogatePair

指示两个制定的char对象是否形成代理项对

IsSymbol

指示某个unicode字符是否属于符号字符类别

IsUpper

指示某个unicode字符是否属于大写字母类别

IsWhiteSpace

指示某个unicode字符是否属于空白类别

Parse

将指定字符串的值转换为他的等效的unicode字符

ToLower

将unicode字符的值转换为它的小写等效项

ToLowerInvariant

使用固定区域性的大小写规则,将Unicode字符的值转换为其小写等效项

ToString

将此实例的值转换为其等效的字符串表示

ToUpper

将unicode字符的值转换为它的大写等效项

TryParse

将指定字符串的值转换为它的等效unicode字符

ToUpperInvariant

使用固定区域性的大小写规则,将Unicode字符的值转换为其大写等效项

 

       Char类提供了许多种方法,其中以Is和To开头的比较重要。以Is开头的方法大多是判断Unicode字符是否为某个类别,以To开头的方法主要是转换为其他Unicode字符。

       下面是其中几种方法的举例,其他方法的使用类似:

static void Main(string[] args)

       {

               char a='a';            //声明字符a

               char b='x';            //声明字符b

               //使用IsLetter方法判断a是否为字母

               Console.WriteLine("IsLetter方法判断a是否为字母:{0}",char.IsLetter (a));

               //使用IsDigit方法判断b是否为数字

               Console.WriteLine("IsDigit方法判断b是否为数字:{0}",char.IsDigit (b ));

               Console.ReadLine();

        }   

 

            运行结果如下图:


    
[2]第六章 普通网格报表(续)
    来源: 互联网  发布时间: 2013-11-10
6.2 数据项的过滤

通常情况下数据源中会含有大量数据,而一张报表会根据用户的需要展示其中的一小部分。这时您需要使用筛选来选择用户需要的数据,比如在显示客户信息表时,我们可以根据用户需要,使用筛选让报表只显示某个特定地区的数据。您甚至可以让用户在运行报表时指定一个值做为筛选值来筛选数据。本章将讨论在BIRT报表中如何使用筛选。出于报表性能方面的考虑,我们建议您在设计报表时仅从数据源获取制作报表需要使用的数据。根据数据源类型与您制作报表类型的不同,BIRT报表提供了多种方法来筛选数据。筛选的第一个时机是使用您数据源提供的筛选功能。比如支持 JDBC 的数据库可以让用户在SQL 查询语句中加入WHERE 子句来筛选数据。事实上,使用数据库的筛选功能来筛选数据的性能是最优的。在BIRT报表从数据源取回数据之后,在报表设计的许多地方您还可以设置筛选,至于在什么地方、什么时候来筛选则大大取决于您自己的需要。比如一个表格和一个列表包含了相似的数据,仅仅是筛选条件不同,那么您可以只创建一个数据集,然后在表格和列表上分别做筛选,而不用为表格和列表各做一个数据集。因为前一种情况只访问数据库一次。

当您使用 JDBC 数据源创建SQL SELECT 查询类型的数据集时,您可以在SELECT查询语句中加入WHERE 条件子句来从数据库查询数据,您可以在WHERE 条件子句定义查询条件,从而实现对数据库中的数据进行筛选。比如下面的 SQL 语句让数据库仅返回客户国家为China 的客户信息:

SELECT *

FROM Customer

WHERE country = 'China'

而下面的SQL 语句则让数据库仅返回客户国家为China,且信用额度超过10000 的客户信息:

SELECT customerName

FROM Customer

WHERE country = 'USA'

AND creditLimit > 10000

假定您已经创建了 JDBC 数据源并使用该数据源创建了SQL SELECT 查询数据集。在数据资源管理器中,双击您需要添加筛选的数据集,打开“编辑数据集”窗口。在查询页面的 SQL 语句编辑区中,添加一个WHERE 子句并定义您的筛选条件。点击“预览结果”,查看数据集返回的结果是否按照您定义的筛选条件进行了筛选。

关于如何编写 SQL WHERE 语句,请查阅SQL 相关资料。

当您使用 XML 数据源创建数据集时,您需要将XML 元素与属性映射至数据集列来指定从XML 中获取哪些数据。为了将XML 元素或属性映射至列,您需要编写XPath。XPath是XML 的查询语言,如果您对XPath 不熟悉,建议您先去了解XPath 的相关资料。

筛选XML 数据源中的数据时,您可以在XPath 语句中指定一个筛选值来筛选数据,比如下面的XPath 语句则让数据源只返回作者名字为”Sally Bush”的信息。

Author[@name=”Sally Bush”]

除了设置在数据源中筛选数据外,您还可以在其他地方筛选数据。当然,我们建议您尽可能在数据源中筛选数据,但是有些数据源中,比如扁平文件数据源,你就不能在数据源中筛选数据。这样您需要在BIRT报表中筛选数据。另外,有些时候SQL 的WHERE 子句并不能满足您的筛选需求,而BIRT报表提供了更多的筛选功能,并且提供了一个可视化的筛选编辑工具来帮助您对数据进行筛选

下面是您在BIRT报表可以设置筛选的地方,您可以在任意一个或多个地方设置筛选

� 数据集

� 报表元素,如表格或列表

� 组

BIRT报表中筛选的第一时机是在数据集上。当报表中只有一个元素使用该数据集,或者当报表中所有元素使用的数据都一样时,您可以在数据集上设置筛选。下图设置了数据集上的过滤器,选择国家为’USA’,城市为’NJ’:


接下来您可以在报表元素上设置筛选。您可以编辑报表元素的筛选属性来指定该元素显示哪些数据。当报表中有多个表格、列表或图表使用同一个数据集,但各自只展现数据集中一部分特定数据的时候,您可以在报表元素上设置筛选。比如您创建了一个数据集,该数据集返回所有国家为 USA 的客户信息。然后在报表设计中有两个报表元素使用了该数据集,比如一个表格和一个列表,那么您可以在表格和列表上分别设置筛选,让它们显示不同的信息。

如下图,我们表的属性中设置了2个过滤器,分别为:

row["CREDITLIMIT"] Top n 100

row["COUNTRY"] 等于 "Canada"


预览结果如下:


最后,您可以在分组上设置筛选。如果您在表格或列表中创建了分组,那么您可以在“创建组”或“编辑组”窗口的筛选标签页里设定分组的筛选,来让表格或列表只显示符合特定条件的分组。比如按客户分组的销售订单统计报表,您可以设定只显示总计订购额达到某个值的客户的订单信息,而不用显示所有客户的订单信息。

如前所述,在BIRT报表中您有三个地方可以设置筛选,您可以根据需要来选择在什么地方设置筛选。以下就是我们给您的几点建议:

� 当您在数据集上设置筛选时,BIRT报表是对数据源取回所有数据进行筛选。

� 当您在报表元素上设置筛选时,BIRT报表是对与该报表元素绑定的数据集中的所有数据进行筛选。

� 当您在分组上设置筛选时,BIRT报表是对组级别的数据进行筛选,通常我们会在筛选条件中使用聚合表达式。比如在前面的例子中,您在分组上设置筛选时,您可以对每个组的国家名或客户总数进行筛选;而不可以对客户名称或客户电话等属于组内明细数据进行筛选。

� 凡是在筛选条件中使用了聚合表达式的筛选只能应用在分组上。在某些情况下同样的筛选条件被设置在不同的地方会产生同样的结果。比如在前面的例子中,您想只显示国家名以A 开头的各个国家的客户信息,那么您可以在数据集、表格或分组上设置同样的筛选条件来达到这一效果。

在BIRT报表中,您可以根据需要创建不同的筛选条件类型来对数据进行筛选,比如您可以设置筛选条件让BIRT报表返回数据中指定列值等于一个特定的值的所有行,或者返回指定列值位于一个特定区间内的所有行,再或者返回指定列值与一个特定字符串模式匹配的所有行等等。

在设置筛选时,BIRT报表把筛选条件运算符直接以名称的方式给您显示,而非实际的运算符,比如BIRT报表直接显示名称“大于”,“小于”,“类似”等,而不是>, <, like 等。下面的表格给您列出了BIRT报表支持的各种筛选条件类型。大多数的筛选运算符可以应用在所有数据类型上。需要注意的是在这些运算符当中有两个模式匹配运算符:类似与匹配(like 与match)。“类似”运算符可以让熟悉SQL 的用户使用SQL 语法来指定模式匹配表达式。而“匹配”运算符则让熟悉JavaScript 的用户使用JavaScript 正则表达式语法来指定模式匹配表达式。

筛选条件

描述

示例

比较

比较字段值与指定值

row["quantity"] 小于 10

row["custName"] 等于 "Acme Inc."

row["custName"] 大于或等于"P"

row["custState"] 不等于 "CA"

row["orderDate"] 小于或等于 "06/30/05"

空值

测试字段值是否为空

row["manager"] 为Null

row["shipDate"] 不为Null

区间

测试字段值是否在指定区间内,区间两端包含在内

row["quantity"] 介于 50 与 100

row["custName"] 介于 "A" 与 "B"

row["custName"] 不介于 "A" 与 "M"

row["orderDate"] 介于"06/01/05" 与 "06/30/05"

条件逻辑

测试

    
[3]std::string::replace使用小计
    来源: 互联网  发布时间: 2013-11-10

ctrl+c / ctrl+v 真是害死人,看起来简单的东西,往往却又很容易出问题

究其原因,还在于只知其表不知其里,容易想当然。


今天遇到的问题是简单调用string::replace替换子串的问题,如:

std::string sTest1 = "12x567890";
std::string sTest2 = sTest1;
std::string sSub = "x";
std::string sRepl = "34";

int index = sTest1.find(sSub.c_str());
sTest1.replace(index, index+strlen(sSub.c_str()), sRepl); // sTest1 == "12347890" 错误,按这种方式抄了下用法

index = sTest2.find(sSub.c_str());
sTest2.replace(index, index+strlen(sSub.c_str()), sRepl.c_str()); // sTest2 == "12347890"  错误

// sTest2.replace(index, strlen(sSub.c_str()), sRepl.c_str()); // sTest2 == "1234567890"  正确


以上sTest2的结果不是想要的,其原因在于函数重载,第三个参数类型不一样前两个参数含义是不一样的。

查看replace实现源码,其功能注释是很清楚的。

看来太习惯于隐式类型转换,如const char* -> string ,不是什么好习惯。

 ===================写到这里,我发现还在犯错误

标准std::string::replace,sTest1替换的语法应该是通不过的而我能通过是因为用的stlport代替标准库。。。






        
作者:powerlly 发表于2013-1-8 16:05:50 原文链接
阅读:12 评论:0 查看评论

    
最新技术文章:
▪error while loading shared libraries的解決方法    ▪版本控制的极佳实践    ▪安装多个jdk,多个tomcat版本的冲突问题
▪简单选择排序算法    ▪国外 Android资源大集合 和个人学习android收藏    ▪.NET MVC 给loading数据加 ajax 等待loading效果
▪http代理工作原理(3)    ▪关注细节-TWaver Android    ▪Spring怎样把Bean实例暴露出来?
▪java写入excel2007的操作    ▪http代理工作原理(1)    ▪浅谈三层架构
▪http代理工作原理(2)    ▪解析三层架构……如何分层?    ▪linux PS命令
▪secureMRT Linux命令汉字出现乱码    ▪把C++类成员方法直接作为线程回调函数    ▪weak-and算法原理演示(wand)
▪53个要点提高PHP编程效率    ▪linux僵尸进程    ▪java 序列化到mysql数据库中
▪利用ndk编译ffmpeg    ▪活用CSS巧妙解决超长文本内容显示问题    ▪通过DBMS_RANDOM得到随机
▪CodeSmith 使用教程(8): CodeTemplate对象    ▪android4.0 进程回收机制    ▪仿天猫首页-产品分类
▪从Samples中入门IOS开发(四)------ 基于socket的...    ▪工作趣事 之 重装服务器后的网站不能正常访...    ▪java序列化学习笔记
▪Office 2010下VBA Addressof的应用    ▪一起来学ASP.NET Ajax(二)之初识ASP.NET Ajax    ▪更改CentOS yum 源为163的源
▪ORACLE 常用表达式    ▪记录一下,AS3反射功能的实现方法    ▪u盘文件系统问题
▪java设计模式-观察者模式初探    ▪MANIFEST.MF格式总结    ▪Android 4.2 Wifi Display核心分析 (一)
▪Perl 正则表达式 记忆方法    ▪.NET MVC 给loading数据加 ajax 等待laoding效果    ▪java 类之访问权限
▪extjs在myeclipse提示    ▪xml不提示问题    ▪Android应用程序运行的性能设计
▪sharepoint 2010 自定义列表启用版本记录控制 如...    ▪解决UIScrollView截获touch事件的一个极其简单有...    ▪Chain of Responsibility -- 责任链模式
▪运行skyeye缺少libbfd-2.18.50.0.2.20071001.so问题    ▪sharepoint 2010 使用sharepoint脚本STSNavigate方法实...    ▪让javascript显原型!
▪kohana基本安装配置    ▪MVVM开发模式实例解析    ▪sharepoint 2010 设置pdf文件在浏览器中访问
▪spring+hibernate+事务    ▪MyEclipse中文乱码,编码格式设置,文件编码格...    ▪struts+spring+hibernate用jquery实现数据分页异步加...
▪windows平台c++开发"麻烦"总结    ▪Android Wifi几点    ▪Myeclipse中JDBC连接池的配置
▪优化后的冒泡排序算法    ▪elasticsearch RESTful搜索引擎-(java jest 使用[入门])...    ▪MyEclipse下安装SVN插件SubEclipse的方法
▪100个windows平台C++开发错误之七编程    ▪串口转以太网模块WIZ140SR/WIZ145SR 数据手册(版...    ▪初识XML(三)Schema
▪Deep Copy VS Shallow Copy    ▪iphone游戏开发之cocos2d (七) 自定义精灵类,实...    ▪100个windows平台C++开发错误之八编程
▪C++程序的内存布局    ▪将不确定变为确定系列~Linq的批量操作靠的住...    ▪DIV始终保持在浏览器中央,兼容各浏览器版本
▪Activity生命周期管理之三——Stopping或者Restarti...    ▪《C语言参悟之旅》-读书笔记(八)    ▪C++函数参数小结
▪android Content Provider详解九    ▪简单的图片无缝滚动效果    ▪required artifact is missing.
▪c++编程风格----读书笔记(1)    ▪codeforces round 160    ▪【Visual C++】游戏开发笔记四十 浅墨DirectX教程...
▪【D3D11游戏编程】学习笔记十八:模板缓冲区...    ▪codeforces 70D 动态凸包    ▪c++编程风格----读书笔记(2)
▪Android窗口管理服务WindowManagerService计算Activity...    ▪keytool 错误: java.io.FileNotFoundException: MyAndroidKey....    ▪《HTTP权威指南》读书笔记---缓存
▪markdown    ▪[设计模式]总结    ▪网站用户行为分析在用户市场领域的应用
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3