swift - String 子串

    ///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
     }

原文地址:https://www.cnblogs.com/daxueshan/p/12396780.html

时间: 2024-08-09 02:48:21

swift - String 子串的相关文章

[Swift]String的坑

在String中获取某个位置的Character,各Swift版本的差异 Swift 3.0 let text = "abc" let index2 = text.index(text.startIndex, offsetBy: 2) //will call succ 2 times let lastChar: Character = text[index2] //now we can index! let characterIndex2 = text.characters.index

Swift String length property

Swift的String竟然没有length属性,好难受,每次要获取String的字符串长度都要借助全局函数countElements. 没办法,只有扩展String结构体,给它添加一个属性了. import Foundation extension String { // readonly computed property var length: Int { return countElements(self) } } let a = "hechengmen" println(a.

Swift - String, Character

String, Character String 在 Swift 中使用双引号(")作为界限: let greeting = "Hello!" // greeting's type is String Character 可以从string初始化,只要只包含一个字符: let chr: Character = "H" // valid let chr2: Character = "??" // valid let chr3: Chara

Swift - String与NSString的区别,以及各自的使用场景

String是Swift里新增加的类型,它与原来的NSString可以很方便地互相转换.但在实际开发中,我们该如何选择? 1,能使用String类型就尽量使用String类型,原因如下: (1)现在Cocoa里所有的API都能接受和返回String类型,所以也没必要特地转换下. (2)Swift的String是struct,而NSString类是NSObject,所以String更符合字符串“不变”这一特性.同时,在不触及NSString特有操作和动态特性的时候,使用String的方法,在性能上

Swift - String

1.String 基础 1.字符串字面量 字符串字面量: 字符串字面量是由双引号包裹着的具有固定顺序的文本字符 例如: let = someString = "Hello World!" 字符串常量可包含的字符: 1. 转义字符 \0(空字符).\\(反斜线).\t(水平制表符).\n(换行符).\r(回车符).\"(双引号).\'(单引号) 2. 单字符 Unicode 标量, 写成 \xnn, 其中 nn 为两位十六进制数. 2. 单字符 Unicode 标量, 写成 \

Swift String 一些常用方法

直接上代码 //字符串 //1 判断字符串是否为空 var test1Str="" var test1Str2:String = String(); println("test1Str" + (test1Str.isEmpty ? "没有值" : "有值")) println("test1Str2" + (test1Str2.isEmpty ? "没有值" : "有值"

Swift String类型常规操作

去除string 首尾的空格var str = " Hello the world   "let whitespace = NSCharacterSet.whitespaceAndNewlineCharacterSet()str = str.stringByTrimmingCharactersInSet(whitespace)  如下图效果: 陆续添加中...

swift String 扩展

// import Foundation import UIKit /// /// @brief String的通用扩展方法 /// extension String { /// /// @brief 获取字符串的高度 /// @param fontSize 字体大小 /// @param width 限制一行显示的宽度 /// @return 返回文本在width宽度的条件下的总高度 /// func height(let fontSize: CGFloat, let width: CGFlo

swift string转double

let  str = "10.0"let double = (str as NSString).doubleValue