当前位置:  windows iis7站长之家
本页文章导读:
    ▪iPhne开发施用正则表达式        iPhne开发使用正则表达式 一般在iPhone开发中,除了在使用c函数时不得不使用char*作为字符串参数,我们都会选择NSString类型的字符串作为首选。 NSString比起char*当然好的不是一星半点,安全.........
    ▪ 拉尔森函数,用来根据日期计算星期几        拉尔森函数,用于根据日期计算星期几 现在的函数输入字符串的格式是:yyyy-MM-dd 例如:2011-01-22 输出是字符串:星期六   /**      * James larsson method.Caculate week from date.      * @param date from.........
    ▪ 施用横竖屏关系       应用横竖屏关系 Android横竖屏要解决的问题应该就两个:一。布局问题;二。重新载入问题。 1.布局问题:如果不想让软件在横竖屏之间切换,最简单的办法就是在项目的 AndroidManifest.xml中找.........

[1]iPhne开发施用正则表达式
    来源: 互联网  发布时间: 2014-02-18
iPhne开发使用正则表达式

一般在iPhone开发中,除了在使用c函数时不得不使用char*作为字符串参数,我们都会选择NSString类型的字符串作为首选。 NSString比起char*当然好的不是一星半点,安全,易用性甚至包括字符编码都是很不错,但相对Java中的String有一个最大的缺点就是它 没有内建强大的支持正则表达式的运用。而实际开发里,只要稍微有文字处理的需求,不使用正则表达式几乎不可想象的。当然即使apple没有给出方案,大批 的开发人员也会自己创造,这就是我们所选择的iPhone中的正则表达式包。

 

RegexKitLite

 

 安装

项目可以在这里 找 到,有非常详细的文档说明以及功能介绍。对于一般使用者而言,只需要获得到解压后的RegexKitLite.h和RegexKitLite.m文件,将 其添加到项目中,然后可以选择把libicucore.dylib.frameworks添加到项目,或者增加-libicucore编译选项,不管如何,这下项目里所有的NSString类型都可以使用RegexKitLite的方法了。

 

实际使用

应该讲,并没有什么特别需要说的,RegexKitLite符合Objective-c一般类型的规范也符合一般正则表达式的规范,在不需要使用正则表达式的高级特性的时候,几分钟就可以掌握,这里可以举例一些常见应用:

// 验证字符串是否为空,这里的空包括空字符串,空格,回车,换行,制表符等
[str isMatchedByRegex:@"^\\s$"];
// 很遗憾的,因为这也是c式字符串里的表示法,所以下划线不得不再次转义。
 
// 验证字符是不是 xx:xx的形式
[str isMatchedByRegex:@"\\w+:\\w+"];
// 如果用了捕获形括号,还可以获得冒号前和冒号后的内容

// 置于分隔等等自然不必多说,大家可以自行掌握
 

 

 

1 楼 wangzi6hao 2011-12-13  
这个框架没有想象中那么强大,有很多bug.对很多正则表达式的匹配,完全是摸不着头脑的,简单一点的,还可以应付,难的,就别想了.

    
[2] 拉尔森函数,用来根据日期计算星期几
    来源: 互联网  发布时间: 2014-02-18
拉尔森函数,用于根据日期计算星期几

现在的函数输入字符串的格式是:yyyy-MM-dd

例如:2011-01-22

输出是字符串:星期六

 

/**
     * James larsson method.Caculate week from date.
     * @param date fromat:yyyy-MM-dd
     * @return
     */
    private String CaculateWeekDay(String date)
    {
       
        String dateYear = date.substring(0, 4);
        String dateMonth = date.substring(5, 7);
        String dateDay = date.substring(8, 10);
        int y = Integer.parseInt(dateYear);
        int m = Integer.parseInt(dateMonth);
        int d = Integer.parseInt(dateDay);
       
        if(m==1||m==2) {
            m+=12;
            y--;
        }
        int iWeek=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
        switch(iWeek)
        {
        case 0:
            return this.getString(“周一”);
        case 1:
            return this.getString(“周二”);
        case 2:
            return this.getString(“周三”);
        case 3:
            return this.getString(“周四”);
        case 4:
            return this.getString(“周五”);
        case 5:
            return this.getString(“周六”);
        case 6:
            return this.getString(“周日”);
        }
        return "";
    }


    
[3] 施用横竖屏关系
    来源: 互联网  发布时间: 2014-02-18
应用横竖屏关系

Android横竖屏要解决的问题应该就两个:一。布局问题;二。重新载入问题。

1.布局问题:如果不想让软件在横竖屏之间切换,最简单的办法就是在项目的 AndroidManifest.xml中找到你所指定的activity中加上android:screenOrientation属性,他有以下几个参数:

    "unspecified"
    默认值 由系统来判断显示方向.判定的策略是和设备相关的,所以不同的设备会有不同的显示方向.
    "landscape"
    横屏显示(宽比高要长)
    "portrait"
    竖屏显示(高比宽要长)
    "user"
    用户当前首选的方向
    "behind"
    和该Activity下面的那个Activity的方向一致(在Activity堆栈中的)
    "sensor"
    有物理的感应器来决定。如果用户旋转设备这屏幕会横竖屏切换。
    "nosensor"
    忽略物理感应器,这样就不会随着用户旋转设备而更改了 ( "unspecified"设置除外 )。

也可以在Java代码中通过setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);来设置。

如果要让软件在横竖屏之间切换,由于横竖屏的高宽会发生转换,有可能会要求不同的布局。可以通过以下方法来切换布局:

1)在res目录下建立layout-land和layout-port目录,相应的layout文件不变,比如main.xml。layout-land是横屏的layout,layout-port是竖屏的layout,其他的不用管,模拟器会自动寻找。

2)通过this.getResources().getConfiguration().orientation来判断当前是横屏还是竖屏然后来加载相应的xml布局文件。因为当屏幕变为横屏的时候,系统会重新呼叫当前Activity的OnCreate方法,你可以把以下方法放在你的OnCreate中来检查当前的方向,然后可以让你的SetContentView来载入不同的Layout xml.
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
Log.i("info", "landscape");
}
else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
Log.i("info", "portrait");
}

2.重新载入问题。如果不需要从新载入,可以在androidmanifest.xml中加入配置android:configChanges="orientation",配置android:configChanges的作用就是如文档所说的:Specify one or more configuration changes that the activity will handle itself. If not specified, the activity will be restarted if any of these configuration changes happen in the system。这样在程序中. Activity就不会重复的调用onCreate()甚至不会调用onPause.onResume.只会调用一个onConfigurationChanged(Configuration newConfig)。

–*************其实在这里我遇到两个奇怪的问题,那就是

1.如果我在android:configChanges中只设置orientation,他依然会重新加载,只有设置了orientation|keyboardHidden它才会只调用一个onConfigurationChanged(Configuration newConfig)

2.当横屏变竖屏的时候,他会调用两次onConfigurationChanged,而竖屏转横屏时他只调用一次onConfigurationChanged,真是太奇怪了。如果你知道,欢迎留言共同探讨*************–

如果需要重新载入,则不需要做任何修改。不过如果需要在重新载入过程中保存之前的操作内容或数据,则需要保存之前的数据。然后在activity的onCreate()中取出来。当然,如此就不能设置android:configChanges()了,否则就不会调用onCreate()方法。那么数据可以保存在哪呢?Android中四种存储方法都可以,另外,还可以用Android为我们提供了onRetainNonConfigurationInstance()方法来暂时保存数据。

下面为此举个例子:

保存临时图片:

  • @Override
  • public Object onRetainNonConfigurationInstance() { 
  • final LoadedPhoto[] list = new LoadedPhoto[numberOfPhotos]; 
  •     keepPhotos(list); 
  • return list; 
  • 之后便可以在activity的onCreate()函数中实现重新调用临时文件,在代码中需要判断系统是否需要重新加载临时文件。以下是放在OnCreate()函数中加载临时文件的代码:

  • private void loadPhotos() { 
  • final Object data = getLastNonConfigurationInstance(); 
  •  
  • // The activity is starting for the first time, load the photos from Flickr
  • if (data == null) { 
  •         mTask = new GetPhotoListTask().execute(mCurrentPage); 
  •     } else { 
  • // The activity was destroyed/created automatically, populate the grid
  • // of photos with the images loaded by the previous activity
  • final LoadedPhoto[] photos = (LoadedPhoto[]) data; 
  • for (LoadedPhoto photo : photos) { 
  •             addPhoto(photo); 
  •         } 
  •     } 
  • 对于大多数的情况并不需要做如上的操作,所以需要谨慎使用这个行文,毕竟最好的行为也并不适用于所有情况,如果应用的不好反而会给程序带来不必要的麻烦。

    如果要彻底禁止翻转,可以设置android:screenOrientation的属性为nosensor,如此就可以忽略重力感应带来的麻烦了。不过不知道为什么,在模拟器上不管用,听别人说在真机上是正确的,我没有真机,等有了真机再试试看。

     

     

     

     出至:http://www.zmkm.info/?p=100


        
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    ▪Android发送短信功能代码
    ▪Android根据电话号码获得联系人头像实例代码
    ▪Android中GPS定位的用法实例
    ▪Android实现退出时关闭所有Activity的方法
    ▪Android实现文件的分割和组装
    ▪Android录音应用实例教程
    ▪Android双击返回键退出程序的实现方法
    ▪Android实现侦听电池状态显示、电量及充电动...
    ▪Android获取当前已连接的wifi信号强度的方法
    ▪Android实现动态显示或隐藏密码输入框的内容
    ▪根据USER-AGENT判断手机类型并跳转到相应的app...
    ▪Android Touch事件分发过程详解
    ▪Android中实现为TextView添加多个可点击的文本
    ▪Android程序设计之AIDL实例详解
    ▪Android显式启动与隐式启动Activity的区别介绍
    ▪Android按钮单击事件的四种常用写法总结
    ▪Android消息处理机制Looper和Handler详解
    ▪Android实现Back功能代码片段总结
    ▪Android实用的代码片段 常用代码总结
    ▪Android实现弹出键盘的方法
    ▪Android中通过view方式获取当前Activity的屏幕截...
    ▪Android提高之自定义Menu(TabMenu)实现方法
    ▪Android提高之多方向抽屉实现方法
    ▪Android提高之MediaPlayer播放网络音频的实现方法...
    ▪Android提高之MediaPlayer播放网络视频的实现方法...
    ▪Android提高之手游转电视游戏的模拟操控
     


    站内导航:


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

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

    浙ICP备11055608号-3