এমনকি যদি matchesInString()
পদ্ধতিটি String
প্রথম আর্গুমেন্ট হিসাবে গ্রহণ করে তবে তা অভ্যন্তরীণভাবে এটির সাথে কাজ করে NSString
এবং সীমা প্যারামিটারটি NSString
দৈর্ঘ্যটি ব্যবহার করে সুইফট স্ট্রিংয়ের দৈর্ঘ্যের হিসাবে নয় অবশ্যই দেওয়া উচিত । অন্যথায় এটি "ফ্ল্যাগস" এর মতো "বর্ধিত গ্রাফি ক্লাস্টার" এর জন্য ব্যর্থ হবে।
এর মতো সুইফট 4 (Xcode 9), সুইফট মান গ্রন্থাগার ফাংশন মধ্যে রূপান্তর করতে উপলব্ধ Range<String.Index>
এবং NSRange
।
func matches(for regex: String, in text: String) -> [String] {
do {
let regex = try NSRegularExpression(pattern: regex)
let results = regex.matches(in: text,
range: NSRange(text.startIndex..., in: text))
return results.map {
String(text[Range($0.range, in: text)!])
}
} catch let error {
print("invalid regex: \(error.localizedDescription)")
return []
}
}
উদাহরণ:
let string = "🇩🇪€4€9"
let matched = matches(for: "[0-9]", in: string)
print(matched)
// ["4", "9"]
দ্রষ্টব্য: বাধ্য আনআরপগুলি Range($0.range, in: text)!
নিরাপদ কারণ NSRange
প্রদত্ত স্ট্রিংয়ের একটি স্ট্রিংকে বোঝায় text
। তবে আপনি যদি এড়াতে চান তবে ব্যবহার করুন
return results.flatMap {
Range($0.range, in: text).map { String(text[$0]) }
}
পরিবর্তে.
(সুইফট 3 এবং এর আগেরটির জন্য পুরানো উত্তর :)
সুতরাং আপনার প্রদত্ত সুইফট স্ট্রিংটিকে একটিতে রূপান্তর করা উচিত NSString
এবং তারপরে ব্যাপ্তিগুলি বের করতে হবে। ফলাফলটি স্বয়ংক্রিয়ভাবে একটি সুইফ্ট স্ট্রিং অ্যারে রূপান্তরিত হবে।
(স্যুইফট ১.২ এর কোড সম্পাদনা ইতিহাসে পাওয়া যাবে))
সুইফট 2 (এক্সকোড 7.3.1):
func matchesForRegexInText(regex: String, text: String) -> [String] {
do {
let regex = try NSRegularExpression(pattern: regex, options: [])
let nsString = text as NSString
let results = regex.matchesInString(text,
options: [], range: NSMakeRange(0, nsString.length))
return results.map { nsString.substringWithRange($0.range)}
} catch let error as NSError {
print("invalid regex: \(error.localizedDescription)")
return []
}
}
উদাহরণ:
let string = "🇩🇪€4€9"
let matches = matchesForRegexInText("[0-9]", text: string)
print(matches)
// ["4", "9"]
সুইফট 3 (এক্সকোড 8)
func matches(for regex: String, in text: String) -> [String] {
do {
let regex = try NSRegularExpression(pattern: regex)
let nsString = text as NSString
let results = regex.matches(in: text, range: NSRange(location: 0, length: nsString.length))
return results.map { nsString.substring(with: $0.range)}
} catch let error {
print("invalid regex: \(error.localizedDescription)")
return []
}
}
উদাহরণ:
let string = "🇩🇪€4€9"
let matched = matches(for: "[0-9]", in: string)
print(matched)
// ["4", "9"]