乐易论坛-乐易网易语言培训教程火山PC视窗中文编程交流论坛

 找回密码
 立即注册

手机号登录

用手机号号登陆

微信登录

微信扫码,快速开始

QQ登录

用QQ账号登陆

办理VIP,定制软件,报名培训联系QQ[重磅]2024年实地培训高清培训目录火山PC版乐易模块使用教程
请牢记揰掵佲的QQ号1615457736 1615457734 其他都是骗子有了火山,易语言是否还有必要学习吗?易语言0基础入门课程
火山PC视窗0基础入门课程易语言外挂0基础入门课程火山PC视窗火山HOOK入门课程
易语言误报处理课程QQ空间POST课程2022年火山PC易语言POST系列课程
Android逆向Jeb动态调试0基础课程QQ邮箱网页POST课程WeChat个微Hook实战课程
百日Js加密分析实战课程(无密下载)QQ群POST课程h5游戏WebSocket逆向视频
JavaScript加密特训课程易语言汇编快速入门课程破解实战系列课程
[2024年]火山PC0基础x64位游戏内存辅助开发教程手游模拟器脚本0基础课程易语言加密防破解0基础入门课程
广告位招租联系QQ1615457736  
查看: 6628|回复: 2

swift string以及NSstring的扩展

[复制链接]

swift string以及NSstring的扩展

[复制链接]
已绑定手机
已实名认证
有妖气
等级头衔

等級:顶级Vip

Rank: 14Rank: 14Rank: 14Rank: 14

积分成就
易币
贡献
主题
精华
金钱
积分
706
注册时间
2014-11-22
最后登录
1970-1-1

勋章墙

2016-3-8 18:35:15 | 显示全部楼层 |阅读模式
论坛里好像没有移动端开发的教程 最近在做IOS的开发,跟大家一起学习了
最近2天遇到了string里操作问题,可以理解为要用swift写出文本_取出中间文本 这个方法
但在swift里貌似行不通,因为他的index不是int类型  (不要用易语言去理解swift 易语言封装太好导致容易编程,一开始我也是根据易语言的取出文本思路去写  下图)


用string可以强制转换成NSstring的方式,用NSstring类去做,结果如下

class leyi {
   
    func swiftJC ()
    {
        var s="1234567890"
        
        var ns1=(s as NSString).substringFromIndex(5)
        var ns2=(s as NSString).substringToIndex(4)
        
        var ns3=(s as NSString).substringWithRange(NSMakeRange(4, 1))
        
        print(ns1)//67890
        print(ns2)//1234
        print(ns3)//5
    }
}
虽然nsstring的index 是int类型,然而发现他并不是我们想要的效果,因为他没有直接提供我们要搜索的前文本 后文本的坐标。 所以需要要有类似seach命令
查看下NSstring的api文档
在下眼拙,看了半天实在无法找到直接命令
只好换string类去操作
直接调用String的对应方法(推荐使用该方法),由于String对应的方法参数是String.Index类型而非Int类型,所以我们首先要创建String.Index类型参数值,代码如下:
   func  swift2 ()
   
    {
        // var s="1234567890"
        
        // let index = advance(s.startIndex, 5)  swift 1.x
        //let index2 = advance(s.endIndex, -6); swift 1.x
        
        
        var s="1234567890"
        
        let index = s.startIndex.advancedBy(5) //swift 2.0+
        let index2 = s.endIndex.advancedBy(-6) //swift 2.0+
        var range = Range<String.Index>(start: index2,end: index)
        
        var s1:String=s.substringFromIndex(index)
        var s2:String=s.substringToIndex(index2)
        var s3=s.substringWithRange(range)
        
        print(s1)//67890
        print(s2)//1234
        print(s3)//5

    }
创建string需要的index对象后,用range()来创建substringwithRange的range对象,虽然看起来解决了我们的问题,我们只需要用string.rangeofstring()来找出前文本 后文本,但调试后发现一个问题,我们无法指定他从哪个起始位置开始寻找后文本,这样会导致得出的文本并不是我们想要的,在翻遍了string的api后,恍然灵机一动,其实可以用上面2种方法结合起来就可以写出我们要的方法, 最终代码如下:
class selfstring {
   
    func  stringmid (wholestring:String,front:String,behind:String)->String
    {

        
        
        if wholestring.isEmpty
        {
           return("wholestring 不能为nil") //wholestring 不能为nil
            
        }else  {
            var whole:NSString=wholestring
            
            
            let frontindex = whole.rangeOfString(front)
            if frontindex.length > 0
            {
                whole = whole.substringFromIndex(frontindex.location + frontindex.length)
                let behindindex = whole.rangeOfString(behind)
                if behindindex.length > 0
                {
                    whole = whole.substringToIndex(behindindex.location)
               
                    return(whole as String)
                    
                } else {return("没有找到behind在wholestring")} //没有找到behind在wholestring
               
               
            } else  {return("没有找到front 在wholestring")}  // 没有找到front 在wholestring
            
           
        }
        


    }


用NSstring的rangeOfString 得到他的index,而nsstring的index是可以得到他的length和location且返回值是int类型,再用substringFromIndex 去掉前文本以及用substringToIndex去掉后文本,思路已经跟精益模块提供的思路不一样了,确实也没有办法 swift貌似无法做到直接从指定位置开始寻找,当然也有可能是我查看SDK文档不仔细,我想这门语言如此强大应该会有,本人小菜,如果有知道的同学请告诉我下

虽然整个程序比较简单,但还是发上来希望对大家有所帮助, 因为这个我花了2天时间才搞定,,哎。。。 英语不好是死穴  o(╯□╰)o



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

评分

参与人数 1易币 +5 金钱 +10 收起 理由
揰掵佲 + 5 + 10 乐易模块闪亮登场 https://www.leybc.com/thread-28

查看全部评分

回复

使用道具 举报

已绑定手机
已实名认证
揰掵佲
等级头衔

等級:乐易运营组

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分成就
易币
贡献
主题
精华
金钱
积分
34538
注册时间
2014-8-2
最后登录
1970-1-1

勋章墙

2016-3-8 23:32:21 | 显示全部楼层
回复

使用道具 举报

已绑定手机
云程万里鹏
等级头衔

等級:编程学徒

Rank: 3Rank: 3

积分成就
易币
贡献
主题
精华
金钱
积分
289
注册时间
2016-3-9
最后登录
1970-1-1

勋章墙

2016-3-13 18:29:58 | 显示全部楼层
明白了,我是小C的小C
回复

使用道具 举报

如果懒得打字,请选择右侧内容快捷回复 提醒:以任何方式进行『恶意灌水』的行为,进行封号处理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

热点推荐上一条 /5 下一条

QQ|网站地图|手机版|小黑屋|乐易论坛-乐易网 | 湘ICP备19007035号

拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表乐易立场!

娄底市乐易网络科技有限公司声明:乐易原创培训课程版权均为我公司所有,未经许可,不得擅自翻录,盗版,破解本站课课程,我们将保留法律诉讼的权利

GMT+8, 2024-6-2 10:38 , Processed in 0.053732 second(s), 44 queries .

Powered by Discuz! X3.4

Copyright © Tencent Cloud.

快速回复 返回顶部 返回列表