সুইফটে কোনও স্ট্রিংয়ে অন্য স্ট্রিং রয়েছে কিনা তা আমি কীভাবে চেক করব?


535

ইন Objective-Cকোড একটি ইন একটি সাবস্ট্রিং জন্য চেক করতে NSStringহল:

NSString *string = @"hello Swift";
NSRange textRange =[string rangeOfString:@"Swift"];
if(textRange.location != NSNotFound)
{
    NSLog(@"exists");
}

তবে আমি কীভাবে সুইফটে এটি করব?


2
@rckoenes আমি দ্রুত নতুন নই, আমি এই objectiveC করতে জানেন কিভাবে
Rajneesh071

1
তাহলে কেন আপনি কেবল একটি খেলার মাঠ শুরু করে দেখুন না।
রকোয়েনস

আপনি যদি এখনও আশেপাশে থাকেন তবে অনুগ্রহ করে ব্যবহারকারীর দ্বারা গৃহীত উত্তরটি পরিবর্তন করুন1021430 ... এটি সঠিক
ড্যান রোজনস্টার্ক

উত্তর:


1044

আপনি সুইফটের সাথে ঠিক একই কল করতে পারেন:

সুইফট 4 এবং সুইফট 5

সুইফ্ট 4 স্ট্রিংয়ে Characterমানগুলির সংগ্রহ , এটি সুইফট 2 এবং 3-এ পছন্দ হয়নি, তাই আপনি আরও সংক্ষিপ্ত কোড 1 ব্যবহার করতে পারেন :

let string = "hello Swift"
if string.contains("Swift") {
    print("exists")
}

সুইফট 3.0+

var string = "hello Swift"

if string.range(of:"Swift") != nil { 
    print("exists")
}

// alternative: not case sensitive
if string.lowercased().range(of:"swift") != nil {
    print("exists")
}

পুরানো সুইফট

var string = "hello Swift"

if string.rangeOfString("Swift") != nil{ 
    println("exists")
}

// alternative: not case sensitive
if string.lowercaseString.rangeOfString("swift") != nil {
    println("exists")
}

আমি আশা করি এটি একটি সহায়ক সমাধান যেহেতু আমাকে সহ কিছু লোক কল করে কিছু অদ্ভুত সমস্যার মুখোমুখি হয়েছিল containsString()1

পুনশ্চ. ভুলে যাবেন নাimport Foundation

পাদটিকা

  1. কেবল মনে রাখবেন স্ট্রিংসে সংগ্রহের ফাংশনগুলি ব্যবহারের কিছু প্রান্তের ঘটনা রয়েছে যা আপনাকে অপ্রত্যাশিত ফলাফল দিতে পারে, উদাহরণস্বরূপ ইমোজি বা অন্যান্য গ্রাফি ক্লাস্টারগুলির সাথে যখন উচ্চারণযুক্ত অক্ষরগুলি ব্যবহার করা হয়।

13
অ্যাপলের ডকুমেন্টেশন বলছে: An NSRange structure giving the location and length in the receiver of the first occurrence of aString. Returns {NSNotFound, 0} if aString is not found or is empty (@"").সুতরাং সম্ভবত কেবল পরীক্ষা করা nilসঠিকভাবে কাজ করবে না।
অ্যালেক্স

7
স্ট্রিং.লোয়ারকেস স্ট্রিং.রেঞ্জঅফ স্ট্রিং ("সুইফ্ট") location অবস্থান! = এনএসনটফাউন্ড। দয়া করে ডকুমেন্টেশন পড়ুন .. আপনি কোনও শূন্য বস্তু ফিরে পাবেন না।
দ্য কোডিংআর্ট

4
@ দ্য গেমিংআর্ট হ্যাঁ আপনি করবেন। স্বয়ংক্রিয়ভাবে আপনার জন্য পুরো জিনিসটি দ্রুত গতিতে বেধে দেয় যাতে এনএসআরঞ্জ থাকলে {NSNotFound, 0}এটি আপনার পক্ষে শূন্য হিসাবে প্রতিনিধিত্ব করা হয়। যদি এটি প্রকৃত পরিসীমা হয় তবে এটি আপনার জন্য একটি সুইফ্ট রেঞ্জ (alচ্ছিক) হিসাবে উপস্থাপিত হয়। কুল।
ম্যাট

4
Grr। কোড স্ট্রিং ডক্সে নেই, এমনকি এক্সকোড 6.3.1 হিসাবে রয়েছে।
ডানকান সি

19
@TheGoonie এই আহ্বান করা হয় না NSString's .rangeOfString()। এই কল করছে String'র .rangeOfString(), যা ঘোষিত হয়func rangeOfString(aString: String, options mask: NSStringCompareOptions = default, range searchRange: Range<Index>? = default, locale: NSLocale? = default) -> Range<Index>?
newacct

192

সম্প্রসারণের উপায়

সুইফট 4

extension String {
    func contains(find: String) -> Bool{
        return self.range(of: find) != nil
    }
    func containsIgnoringCase(find: String) -> Bool{
        return self.range(of: find, options: .caseInsensitive) != nil
    }
}

var value = "Hello world"

print(value.contains("Hello")) // true
print(value.contains("bo"))    // false

print(value.containsIgnoringCase(find: "hello"))    // true
print(value.containsIgnoringCase(find: "Hello"))    // true
print(value.containsIgnoringCase(find: "bo"))       // false

সাধারণত সুইফট 4 এ আইওএস 8.0+ থেকে পাওয়া যায় এমন পদ্ধতি রয়েছে


সুইফট ৩.১

আপনি এক্সটেনশন লিখতে পারেন contains:এবং এর containsIgnoringCaseজন্যString

extension String { 

   func contains(_ find: String) -> Bool{
     return self.range(of: find) != nil
   }

   func containsIgnoringCase(_ find: String) -> Bool{
     return self.range(of: find, options: .caseInsensitive) != nil 
   }
 }

পুরানো সুইফ্ট সংস্করণ

extension String {

    func contains(find: String) -> Bool{
       return self.rangeOfString(find) != nil
     }

    func containsIgnoringCase(find: String) -> Bool{
       return self.rangeOfString(find, options: NSStringCompareOptions.CaseInsensitiveSearch) != nil
     }
}

উদাহরণ:

var value = "Hello world"

print(value.contains("Hello")) // true
print(value.contains("bo"))    // false

print(value.containsIgnoringCase("hello"))    // true
print(value.containsIgnoringCase("Hello"))    // true
print(value.containsIgnoringCase("bo"))       // false

6
কেস ব্যবহার উপেক্ষা করুন। স্বাবঞ্জিত করুনআফ স্ট্রিং (সন্ধান করুন, বিকল্পগুলি: এনএসএসটিরিংকম্পিয়ারঅ্যাপশনস। কেসআইএনসেভেটিভস অনুসন্ধান)! = শূন্য
মাসগার

1
আপনার কাছাকাছি না থাকলে আর প্রয়োজন হয় না Foundation... containsStringঠিকঠাক কাজ করে।
ড্যান রোজনস্টার্ক

5
দ্রুত 3.0। নীচে পরিবর্তন করুন: এক্সটেনশান স্ট্রিং {ফানক রয়েছে (সন্ধান করুন: স্ট্রিং) -> বুল {রিটার্ন সেল্ফ.রেঞ্জ (এর: সন্ধান করুন)! = শূন্য} ফানক রয়েছেআইগনরিং কেস (সন্ধান করুন: স্ট্রিং) -> বুল {রিটার্ন সেল.রেঞ্জ (এর: সন্ধান করুন , বিকল্পগুলি:। کیسি সংবেদনশীল)! = শূন্য}}
মাইকেল শ্যাং

সুইফ্ট 4 -> এক্সটেনশান স্ট্রিংয়ের জন্য {ফানক রয়েছে (সন্ধান করুন: স্ট্রিং) -> বুল {রিটার্ন সেল্ফ.রেঞ্জ (এর: সন্ধান করুন)! = শূন্য} ফানক রয়েছেআইগনরিং কেস (সন্ধান করুন: স্ট্রিং) -> বুল {রিটার্ন সেলফ্রেঞ্জ (এর: সন্ধান করুন, বিকল্পগুলি:। কেস সংবেদনশীল)! = শূন্য}}
শোকাভেলি

50

দস্তাবেজগুলি থেকে, দেখে মনে হচ্ছে যে স্ট্রিংয়ের containsString()উপর কল করার কাজ করা উচিত:

সুইফ্টের স্ট্রিং প্রকারটি ফাউন্ডেশনের এনএসএস স্ট্রিং ক্লাসে নির্বিঘ্নে ব্রিজ করা হয়েছে। আপনি যদি কোকো বা কোকো টাচের ফাউন্ডেশন কাঠামোর সাথে কাজ করছেন, এই অধ্যায়ে বর্ণিত স্ট্রিং বৈশিষ্ট্যগুলি ছাড়াও, আপনি যে কোনও স্ট্রিংয়ের মান তৈরি করতে পুরো এনএসএসস্ট্রিং এপিআই উপলব্ধ। আপনি এমন কোনও এপিআইয়ের সাথে একটি স্ট্রিং মানও ব্যবহার করতে পারেন যার জন্য এনএসএসস্ট্রিংয়ের উদাহরণ প্রয়োজন।

তবে, এটি সেভাবে কাজ করবে বলে মনে হয় না।

আপনি যদি ব্যবহার করার চেষ্টা করেন তবে আপনি someString.containsString(anotherString)একটি সংকলন সময় ত্রুটি পাবেন যা উল্লেখ করেছে 'String' does not contain a member named 'containsString'

সুতরাং, আপনি কয়েকটি অপশন, যার মধ্যে এক স্পষ্টভাবে আপনার সেতু হয় অবশিষ্ট করছি Stringব্যবহার করে উদ্দেশ্য-C bridgeToObjectiveC()অন্য দুটি স্পষ্টভাবে একটি ব্যবহার জড়িত NSStringএবং চূড়ান্ত এক ভোটদান জড়িত Stringএকটি থেকেNSString

ব্রিজ করে, আপনি পাবেন:

var string = "hello Swift"
if string.bridgeToObjectiveC().containsString("Swift") {
    println("YES")
}

স্পষ্টভাবে একটি হিসাবে স্ট্রিং টাইপ করে NSString, আপনি পাবেন:

var string: NSString = "hello Swift"
if string.containsString("Swift") {
    println("YES")
}

আপনার যদি বিদ্যমান থাকে তবে আপনি Stringএনএসএসটিং (স্ট্রিং :) ব্যবহার করে এটি থেকে একটি এনএসএসআর্টিং শুরু করতে পারেন:

var string = "hello Swift"
if NSString(string: string).containsString("Swift") {
    println("YES")
}

এবং পরিশেষে, আপনি একটি বিদ্যমান কাস্ট করতে পারেন Stringএকটি থেকে NSStringনীচের হিসাবে

var string = "hello Swift"
if (string as NSString).containsString("Swift") {
    println("YES")
}

4
শেষ উদাহরণ (আমি অন্যদের চেষ্টা করি নি) আইওএস 7 (ডিভাইস) এ আমার জন্য ক্র্যাশ করেছে; সুইফট অ্যাপস আইওএস 7 ঠিক সূক্ষ্ম চালানো উচিত ত্রুটি আমি পেতে হয় [__NSCFString containsString:]: unrecognized selector sent to instance। এছাড়াও, containsStringআইওএস 8 এর জন্য এটি নতুন কিনা তা নিশ্চিত করার জন্য আমি দেব ডক্সে পদ্ধতিটি খুঁজে পাচ্ছি না
জেসন লিচ

মজাদার. আমি কেবল একটি খেলার মাঠে এটি পরীক্ষা করেছি। আমি যখন আমার কম্পিউটারে থাকি তখন পরে চেষ্টা করে দেখব।
সেজার

তৃতীয় এবং চতুর্থ বিকল্পগুলি কেবলমাত্র সংকলক অনুমোদিত। উভয় আইওএস 7 বিটা 4 আমার জন্য বিপর্যস্ত
Palmi

38

আরেকটা. কেস এবং ডায়াক্রিটিক বিকল্পগুলির সমর্থন করে।

সুইফট 3.0

struct MyString {
  static func contains(_ text: String, substring: String,
                       ignoreCase: Bool = true,
                       ignoreDiacritic: Bool = true) -> Bool {

    var options = NSString.CompareOptions()

    if ignoreCase { _ = options.insert(NSString.CompareOptions.caseInsensitive) }
    if ignoreDiacritic { _ = options.insert(NSString.CompareOptions.diacriticInsensitive) }

    return text.range(of: substring, options: options) != nil
  }
}

ব্যবহার

MyString.contains("Niels Bohr", substring: "Bohr") // true

আইওএস 9+

আইওএস 9 এর পরে কেস এবং ডায়াক্রিটিক সংবেদনশীল ফাংশন উপলব্ধ।

if #available(iOS 9.0, *) {
  "Für Elise".localizedStandardContains("fur") // true
}

31

এক্সকোড .1.১ এবং সুইফট ২.১ containsString()আমার পক্ষে কাজ করছে।

let string = "hello swift"
if string.containsString("swift") {
    print("found swift")
}

সুইফট 4:

let string = "hello swift"
if string.contains("swift") {
    print("found swift")
}

এবং একটি মামলা সংবেদনশীল সুইফট 4 উদাহরণ:

let string = "Hello Swift"
if string.lowercased().contains("swift") {
    print("found swift")
}

বা কেস সংবেদনশীল Stringএক্সটেনশন ব্যবহার করে :

extension String {
    func containsIgnoreCase(_ string: String) -> Bool {
        return self.lowercased().contains(string.lowercased())
    }
}

let string = "Hello Swift"
let stringToFind = "SWIFT"
if string.containsIgnoreCase(stringToFind) {
    print("found: \(stringToFind)")  // found: SWIFT
}
print("string: \(string)")
print("stringToFind: \(stringToFind)")

// console output:
found: SWIFT
string: Hello Swift
stringToFind: SWIFT

3
আপনার দরকার import Foundation, অন্যথায় এটি কাজ করবে না।
আন্দ্রে চেরেনকো

উভয় ক্ষেত্রেই import UIKitএর import Foundationপ্রয়োজন হয়, আইওএস 11 এবং সুইফট 4. সঙ্গে অন্তত
মারে Sagal

তবে সেটা কেস সেনসিটিভ। কেস উপেক্ষা করার সময় আপনি কীভাবে তুলনা করবেন। জাভা স্ট্রিং.একুয়ালস আইগনোর কেসে (অন্য স্ট্রিং) এর মতো?
জুলকরনাইন শাহ

@ জুলকারনাইনশাহ আমি উত্তরে একটি উদাহরণ যুক্ত করেছি।
মারে সাগাল

@ মুরেসাগাল থ্যাটস এখনও সংবেদনশীল অনুসন্ধানের ক্ষেত্রে নেই। আপনি আসল স্ট্রিংটিকে ছোট হাতের সাথে রূপান্তর করছেন এবং তারপরে স্পষ্টভাবে একটি ছোট কেস স্ট্রিংয়ের সাথে তুলনা করছেন। এটি কাজটি করবে, তবে এটি করার আদর্শ উপায় নয়
জুলকারনাইন শাহ

22

সুইফটে 4.2

ব্যবহার

func contains(_ str: String) -> Bool

উদাহরণ

let string = "hello Swift"
let containsSwift = string.contains("Swift")
print(containsSwift) // prints true

4
দয়া করে নোট করুন যে এর জন্য আপনার ফাউন্ডেশন আমদানি করা দরকার।
rmaddy

16

> সুইফটে 3.0

let str = "Hello Swift"
if str.lowercased().contains("Swift".lowercased()) {
    print("String Contains Another String")
} else {
    print("Not Exists")
}

আউটপুট

String Contains Another String

15

আপনি কোডটি ব্যবহার করে সুইফটে খুব সহজেই এটি করতে পারেন:

let string = "hello Swift";
let subString = (string as NSString).containsString("Swift")
if(subString){println("Exist")}

10

এখানে উত্তরের কেবল একটি সংযোজন।

আপনি এটি ব্যবহার করে একটি স্থানীয় কেস সংবেদনশীল পরীক্ষাও করতে পারেন:

 - (BOOL)localizedCaseInsensitiveContainsString:(NSString *)aString

উদাহরণ:

    import Foundation

    var string: NSString  =  "hello Swift"
   if string.localizedCaseInsensitiveContainsString("Hello") {
    println("TRUE")
}

হালনাগাদ

এটি আইওএস এবং ম্যাক ওএস এক্স 10.10.x এর ফাউন্ডেশন ফ্রেমওয়ার্কের একটি অংশ এবং আমার আসল পোস্টের সময় এটি 10.10 এর অংশ ছিল।

দস্তাবেজ উত্পন্ন: 2014-06-05 12:26:27 -0700 ওএস এক্স রিলিজ নোটস কপিরাইট © 2014 অ্যাপল ইনক। সর্বস্বত্ব সংরক্ষিত।

ওএস এক্স 10.10 রিলিজ নোটস কোকো ফাউন্ডেশন ফ্রেমওয়ার্ক

এনএসএসটিং-এ এখন নিম্নলিখিত দুটি সুবিধা পদ্ধতি রয়েছে:

- (BOOL)containsString:(NSString *)str;

- (BOOL)localizedCaseInsensitiveContainsString:(NSString *)str;


1
সচেতন হতে হবে এই পদ্ধতির আইওএস 8. প্রয়োজন
অ্যান্ড্রু Ebling

9

এটি সুইফ্ট খেলার মাঠে এটিতে আমার প্রথম ছুরিকাঘাত। আমি দুটি নতুন ফাংশন সরবরাহ করে স্ট্রিং প্রসারিত করি (এতে রয়েছে এবং আইগনোর কেস থাকে)

extension String {
    func contains(other: String) -> Bool{
        var start = startIndex

        do{
            var subString = self[Range(start: start++, end: endIndex)]
            if subString.hasPrefix(other){
                return true
            }

        }while start != endIndex

        return false
    }

    func containsIgnoreCase(other: String) -> Bool{
        var start = startIndex

        do{
            var subString = self[Range(start: start++, end: endIndex)].lowercaseString
            if subString.hasPrefix(other.lowercaseString){
                return true
            }

        }while start != endIndex

        return false
    }
}

এটি ব্যবহার করুন

var sentence = "This is a test sentence"
sentence.contains("this")  //returns false
sentence.contains("This")  //returns true
sentence.containsIgnoreCase("this")  //returns true

"This is another test sentence".contains(" test ")    //returns true

আমি কোনও প্রতিক্রিয়া স্বাগত জানবো :)


পরবর্তী পদক্ষেপ: এটিকে একটি জেনেরিক ফাংশন তৈরি করুন যা সমস্ত সংগ্রহের :-) এ কাজ করে Eg 'উপেক্ষা কেস' ভেরিয়েন্টে, একবার কেবল স্ট্রিংগুলি ছোট করে রাখুন (আসুন lc = অন্যান্য low কর্কের আগে স্ট্রিং করুন)
hnh

9

এখানে থাকা সমস্ত উত্তরগুলির মধ্যে আমার মনে হয় তারা হয় কাজ করে না, বা তারা কিছুটা হ্যাক (এনএসএসস্ট্রিং-এ ফিরে .ালাই)। এটি সম্ভবত খুব সম্ভবত বিভিন্ন বিটা প্রকাশের সাথে সঠিক উত্তরটি পরিবর্তিত হয়েছে।

আমি যা ব্যবহার করি তা এখানে:

let string: String = "hello Swift"
if string.rangeOfString("Swift") != nil
{
    println("exists")
}

"! = নিল" বিটা 5 এর সাথে প্রয়োজনীয় হয়ে উঠেছে।


6

আপনি এখানে:

let s = "hello Swift"
if let textRange = s.rangeOfString("Swift") {
    NSLog("exists")
}

কিছু সময় আপনার নীচের মতো কমপ্যাক্ট ফর্মের প্রয়োজন হতে পারে: রেঞ্জইফেক্সিস্টস = স্ট্রিং.রেঞ্জআফ স্ট্রিং ("সুইফ্ট") দিন ?? মিথ্যা যা হয় এটি বুলিয়ান হিসাবে মিথ্যা না থাকলে এটি অন্তর্ভুক্ত থাকে বা এনএসরেঞ্জ অন্যথায়
স্টাফেন ডি লুকা

5

এর জন্য আপনার কোনও কাস্টম কোড লেখার দরকার নেই। 1.2 সংস্করণ থেকে শুরু করে সুইফট ইতিমধ্যে আপনার প্রয়োজন সমস্ত পদ্ধতি পেয়েছে:

  • স্ট্রিং দৈর্ঘ্য পেয়ে: count(string);
  • পরীক্ষণ যদি স্ট্রিং সাবস্ট্রিং রয়েছে: contains(string, substring);
  • স্ট্রিংটি স্ট্রিংয়ের সাথে শুরু হয় কিনা তা পরীক্ষা করা হচ্ছে: startsWith(string, substring)
  • এবং ইত্যাদি.

সুইফট 2 এক নয়।
সুরগাচ



4

এই যে! এক্সকোড 8 এবং সুইফট 3 এর জন্য প্রস্তুত।

import UIKit

let mString = "This is a String that contains something to search."
let stringToSearchUpperCase = "String"
let stringToSearchLowerCase = "string"

mString.contains(stringToSearchUpperCase) //true
mString.contains(stringToSearchLowerCase) //false
mString.lowercased().contains(stringToSearchUpperCase) //false
mString.lowercased().contains(stringToSearchLowerCase) //true

3

স্ট্রিং.কন্টেনস স্ট্রিং কেবলমাত্র 10.10 ইয়োসেমাইটে (এবং সম্ভবত আইওএস 8) উপলভ্য। এটি 10.9 সালে অবজেক্টিভসি ক্র্যাশগুলিতে ব্রিজ করাও। আপনি এনএসসিএফএস স্ট্রিংয়ে একটি এনএসএস স্ট্রিং পাস করার চেষ্টা করছেন। আমি পার্থক্যটি জানি না, তবে আমি এটি বলতে পারি 10.9 বার্ফ যখন এটি কোনও OS X 10.9 অ্যাপে এই কোডটি কার্যকর করে।

10.9 এবং 10.10 এর সাথে সুইফ্টের পার্থক্যগুলি এখানে রয়েছে : https://developer.apple.com/library/prerelease/mac/docamentation/ জেনারাল / রেফারেন্স / APIDiffsMacOSX10_10SidDiff/index.html ধারণাগুলি কেবলমাত্র 10.10-এ পাওয়া যায়

উপরের স্ট্রিংয়ের ব্যাপ্তি 10.9-এ দুর্দান্ত কাজ করে। আমি 10.9-তে বিকাশমানটি এক্সকোড বিটা 2 সহ দুর্দান্ত স্থিতিশীল finding আমি খেলার মাঠগুলি বা খেলার মাঠের কমান্ড লাইন সংস্করণটি ব্যবহার করি না। আমি যদি সঠিক ফ্রেমওয়ার্কগুলি আমদানি করা হয় তবে স্বতঃপূরণটি খুব সহায়ক finding


3

4 এবং সুইফট 4 এ নতুন সিনট্যাক্স আপনি ঠিক করতে পারেন

string.contains("Swift 4 is the best")

স্ট্রিং আপনার স্ট্রিং ভেরিয়েবল


2

এক্সকোড 8 / সুইফ্ট 3 সংস্করণ:

let string = "hello Swift"

if let range = string.range(of: "Swift") {
    print("exists at range \(range)")
} else {
    print("does not exist")
}

if let lowercaseRange = string.lowercased().range(of: "swift") {
    print("exists at range \(lowercaseRange)")
} else {
    print("does not exist")
}

আপনি এটি ব্যবহার করতে পারেন contains:

string.contains("swift") // false
string.contains("Swift") // true

2

এতে 'হ্যালো' রয়েছে কিনা তা পরীক্ষা করুন

let s = "Hello World"

if s.rangeOfString("Hello") != nil {
    print("Yes it contains 'Hello'")
}

2

প্রয়োজনীয় Foundation(বা UIKit) ফ্রেমওয়ার্ক আমদানি সহ সাবস্ট্রিংগুলির জন্য চেক করার জন্য সুইফট 4 টি উপায় :

import Foundation // or UIKit

let str = "Oh Canada!"

str.contains("Can") // returns true

str.contains("can") // returns false

str.lowercased().contains("can") // case-insensitive, returns true

যদি না Foundation(অথবা UIKit) ফ্রেমওয়ার্ক আমদানি করা হয়, str.contains("Can")কম্পাইলার ত্রুটি দেব।


এই উত্তরটি মনোজাল্ডসের উত্তরকে পুনরুদ্ধার করছে , যা সম্পূর্ণ সঠিক। আমি কেন এত উত্তর পুনঃ এত কষ্ট দিয়ে যেতে কোন ধারণা আছে Foundationএর String.contains(subString: String)পদ্ধতি।


1
// Search string exist in employee name finding.
var empName:NSString! = employeeDetails[filterKeyString] as NSString

Case sensitve search.
let rangeOfSearchString:NSRange! = empName.rangeOfString(searchString, options: NSStringCompareOptions.CaseInsensitiveSearch)

// Not found.
if rangeOfSearchString.location != Foundation.NSNotFound
{
    // search string not found in employee name.
}
// Found
else
{
    // search string found in employee name.
}

1

সুইফট 3: এখানে আপনি আমার স্মার্ট অনুসন্ধানের এক্সটেনশানটি দেখতে পাচ্ছেন যে স্ট্রিংটিতে এটি রয়েছে কিনা তা দেখার জন্য বা কোনও অনুসন্ধানের পাঠ্যের উপর ভিত্তি করে কোনও সংগ্রহ ফিল্টার করতে পারে।

https://github.com/magonicolas/Swift-Smart-String-Search


0

আইওএস 8 এবং আরও নতুনতে আপনি এই দুটি NSStringপদ্ধতি ব্যবহার করতে পারেন :

@availability(iOS, introduced=8.0)
func containsString(aString: String) -> Bool

@availability(iOS, introduced=8.0)
func localizedCaseInsensitiveContainsString(aString: String) -> Bool

কি? দেখে মনে হচ্ছে এটি পাওয়া যাচ্ছে না? এক্সকোড 6.1
আলি

0

আমি বেশ কয়েকটি আকর্ষণীয় ব্যবহারের কেস পেয়েছি। এই ভেরিয়েন্টগুলি পরিসীমা অফ স্ট্রিং পদ্ধতি ব্যবহার করে এবং আমি কীভাবে কেউ সুইফট ২.০ তে স্ট্রিংসের অনুসন্ধান এবং তুলনা বৈশিষ্ট্যগুলি সর্বোত্তমভাবে ব্যবহার করতে পারে তা দেখানোর জন্য সাম্যের উদাহরণ অন্তর্ভুক্ত করি include

//In viewDidLoad() I assign the current object description (A Swift String) to self.loadedObjectDescription
self.loadedObjectDescription = self.myObject!.description

পরে আমি স্ব। আমারঅবজেক্টে পরিবর্তন করে নেওয়ার পরে, আমি নিম্নলিখিত স্ট্রিং তুলনা রুটিনগুলি (অলস ভেরিয়েবল হিসাবে সেট যা একটি বুল ফেরত দেয়) উল্লেখ করতে পারি। এটি একজনকে যে কোনও সময় রাষ্ট্র পরীক্ষা করতে সহায়তা করে।

lazy var objectHasChanges : Bool = {
        guard self.myObject != nil else { return false }
        return !(self.loadedObjectDescription == self.myObject!.description)
    }()

এর একটি বৈকল্পিক ঘটে যখন কখনও কখনও আমি object অবজেক্টের কোনও অনুপস্থিত সম্পত্তি বিশ্লেষণ করতে পারি। একটি স্ট্রিং অনুসন্ধান আমাকে কোনও নির্দিষ্ট স্ট্রিং শূন্যস্থানে সেট করার অনুমতি দেয় (কোনও বস্তু তৈরি হওয়ার সময় ডিফল্ট)।

    lazy var isMissingProperty : Bool = {
        guard self.myObject != nil else { return true }
        let emptyPropertyValue = "myProperty = nil"
        return (self.myObject!.description.rangeOfString(emptyPropertyValue) != nil) ? true : false
    }()

0

আপনি যদি এটি পরীক্ষা করতে চান যে একটি স্ট্রিংয়ের মধ্যে এটির মধ্যে অন্য সাব-স্ট্রিং রয়েছে বা আপনি এটিও এটির মতো চেক করতে পারেন,

var name = String()  
name = "John has two apples." 

এখন, এই নির্দিষ্ট স্ট্রিংয়ে যদি আপনি জানতে চান যে এতে ফলের নাম 'আপেল' রয়েছে বা না আপনি কি করতে পারেন,

if name.contains("apple")      
{  
print("Yes , it contains fruit name")    
}    
else      
{    
 print(it does not contain any fruit name)    
}    

আশা করি এটি আপনার পক্ষে কাজ করে।


-2

আপনি কেবল যা উল্লেখ করেছেন তা করতে পারেন:

import Foundation
...
string.contains("Swift");

ডক্স থেকে:

সুইফটের Stringধরণটি ফাউন্ডেশনের NSString ক্লাসে নির্বিঘ্নে ব্রিজ করা হয় । যদি আপনি কোকো বা কোকোয়া স্পর্শে ফাউন্ডেশন কাঠামোর সাথে কাজ করে থাকেন তবে এই অধ্যায়টিতে বর্ণিত স্ট্রিং বৈশিষ্ট্যগুলি ছাড়াও আপনার তৈরি NSStringকরা কোনও Stringমানের জন্য সম্পূর্ণ API উপলব্ধ to আপনি যে কোনও এপিআই-এর জন্য একটি স্ট্রিং মানও ব্যবহার করতে পারেন যার জন্য একটি এনএসএস স্ট্রিং ইনস্ট্যান্স প্রয়োজন।

আপনাকে পদ্ধতিগুলি import Foundationব্রিজ NSStringকরতে হবে এবং এগুলিকে সুইফ্টের স্ট্রিং ক্লাসে উপলব্ধ করতে হবে।


আমি না, তবে না, তা হয় না।
সেজার

হাঁ। কোনও খেলার মাঠে, একটি ম্যাক অ্যাপে এবং কোনও আইওএস অ্যাপে চেষ্টা করা T খেলার মাঠটি কোকো, ইউআইকিট, ফাউন্ডেশন এবং তাদের তিনটির সমস্ত সম্ভাব্য সংমিশ্রণের ক্ষেত্রেও চেষ্টা করা হয়েছে (কোকো / ইউআইকিট বাদে, যার অর্থ নেই)
সেজার

এটি এখন আর সুইফট 1.2 হিসাবে কেস নেই
কেলভিন লউ

-4

সুইফট 4 খুব সহজ !!

if (yourString.contains("anyThing")) {
   Print("Exist")
}

1
এখানে অন্যান্য উত্তরগুলির সাথে এটি কীভাবে আলাদা?
অ্যাশলে মিলস

1
$ swift Welcome to Apple Swift version 4.2 (swiftlang-1000.11.37.1 clang-1000.11.45.1). Type :help for assistance. 1> print ("Ping") Ping 2> Print ("Ping") error: repl.swift:2:1: error: use of unresolved identifier 'Print' Print ("Ping") ^~~~~ একটি অচিহ্নিত উত্তর প্রদান করে যা কার্যকর হয় না। মুদ্রণ! = মুদ্রণ
ফ্রেড গ্যানেট 9
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.