zoukankan      html  css  js  c++  java
  • swift

        ///1, 截取规定下标之后的字符串
        func subStringFrom(index: Int) -> String {
            let temporaryString: String = self
            let temporaryIndex = temporaryString.index(temporaryString.startIndex, offsetBy: index)
            return String(temporaryString[temporaryIndex...])
        }
    
        ///2, 截取规定下标之前的字符串
        func subStringTo(index: Int) -> String {
            let temporaryString = self
            let temporaryIndex = temporaryString.index(temporaryString.startIndex, offsetBy: index)
            return String(temporaryString[...temporaryIndex])
        }
        ///3,替换某个range的字符串
        func replaceStringWithRange(location: Int, length: Int, newString: String) -> String {
            if location + length > self.count {
                return self
            }
            let start = self.startIndex
            let location_start = self.index(start, offsetBy: location)
            let location_end = self.index(location_start, offsetBy: length)
            let result = self.replacingCharacters(in: location_start..<location_end, with: newString)
            return result
        }
        ///4.获取某个range 的子串
        func subStringWithRange(location: Int, length: Int) -> String {
            if location + length > self.count{
                return self
            }
            let str: String = self
            let start = str.startIndex
            let startIndex = str.index(start, offsetBy: location)
            let endIndex = str.index(startIndex, offsetBy: length)
            return String(str[startIndex..<endIndex])
        }
        
        /// 正则匹配第一次出现
        func firstMatchWith(pattern: String) -> NSRange {
            if self.count == 0 {
                return NSMakeRange(0, 0)
            }
            do
            {
                let str: String = self
                let regular = try NSRegularExpression(pattern: pattern, options: NSRegularExpression.Options.caseInsensitive)
                let reg = regular.firstMatch(in: str, options: NSRegularExpression.MatchingOptions.init(rawValue: 0), range: NSMakeRange(0, str.count))
                if let result = reg {
                    return NSMakeRange(result.range.location, result.range.length)
                }
            }catch {
                KimLogError(format: "error: (error)")
            }
                return NSMakeRange(0, 0)
        }
        
        /// 获取子串的所有range
        static func rangesOfString(_ searchString: String, inString: NSString) -> [NSRange] {
             var results = [NSRange]()
             if searchString.count > 0 && inString.length > 0 {
                 var searchRange = NSMakeRange(0, inString.length)
                 var range = inString.range(of: searchString, options: [], range: searchRange)
                 while (range.location != NSNotFound) {
                     results.append(range)
                     searchRange = NSMakeRange(NSMaxRange(range), inString.length - NSMaxRange(range))
                     range = inString.range(of: searchString, options: [], range: searchRange)
                 }
                 
             }
             return results
         }
  • 相关阅读:
    hdu 1166 敌兵布阵 线段树区间修改、查询、单点修改 板子题
    POJ 1655 Balancing Act ( 树的重心板子题,链式前向星建图)
    P1268 树的重量(板子)
    P1896 [SCOI2005]互不侵犯 状压dp
    Delphi {$M +} 与{$TYPEINFO ON} 和 {$M -} 与{$TYPEINFO OFF}
    SQL 通过SQL语句检索字段类型、长度、主键
    随笔2020.11.10
    Delphi 操作Windows系统睡眠-防止系统/电脑 进入睡眠或关闭显示器
    Delphi WinAPI SetThreadExecutionState
    Delphi TOpenDialog的使用介绍以及如何动态创建和释放
  • 原文地址:https://www.cnblogs.com/daxueshan/p/12396780.html
Copyright © 2011-2022 走看看