একটি এনএসএস স্ট্রিংয়ের শেষে থেকে স্পেসগুলি ট্রিম করুন


367

আমার একটি স্ট্রিংয়ের শেষে থেকে ফাঁকা স্থান সরিয়ে নেওয়া দরকার। আমি এটা কিভাবে করবো? উদাহরণ: যদি স্ট্রিং হয় তবে "Hello "তা অবশ্যই তৈরি হবে"Hello"


1
এটির একটি সুইফ্ট সংস্করণ রয়েছে। stackoverflow.com/questions/26797739/...
tounaobun

উত্তর:


900

এই উত্তরটি এখানে নেওয়া হয়েছে: https://stackoverflow.com/a/5691567/251012

- (NSString *)stringByTrimmingTrailingCharactersInSet:(NSCharacterSet *)characterSet {
    NSRange rangeOfLastWantedCharacter = [self rangeOfCharacterFromSet:[characterSet invertedSet]
                                                               options:NSBackwardsSearch];
    if (rangeOfLastWantedCharacter.location == NSNotFound) {
        return @"";
    }
    return [self substringToIndex:rangeOfLastWantedCharacter.location+1]; // non-inclusive
}

156
অক্ষরের সেটটিতে নতুনলাইনগুলি অন্তর্ভুক্ত করতে, ব্যবহার করুন whitespaceAndNewlineCharacterSet
পেনফোল্ড

9
কেবলমাত্র একটি সামান্য নোট: এই পদ্ধতিটি উভয় প্রান্ত থেকে সাদা স্পেসগুলি সরিয়ে দেয়। এটি স্ট্রিংয়ের অভ্যন্তর থেকে সাদা স্থানগুলি সরিয়ে দেয় না।
অ্যালেক্স

10
আমি বুঝতে পারছি না কীভাবে প্রশ্নের উত্তর না দেওয়া এতগুলি উপার্জন পায়। আপনার সমাধানটি স্ট্রিংয়ের শুরুতে হোয়াইটস্পেসও সরিয়ে দেয় এবং এটি যা চাওয়া হয়েছিল তা নয়।
জেমস বাউচার

4
@ জেমসবাউচারের এত বেশি উত্সাহ পাওয়ার কারণটি হ'ল আমরা এখানে গুগলে "ট্রিম এনএসএসস্ট্রিং" খুঁজছিলাম এবং এই প্রশ্নের সঠিক উত্তর এটি। এটি সত্য যে ওপি আরও কিছু চেয়েছিল।
ড্যান রোজনস্টার্ক

20

আরেকটি সমাধানে পারস্পরিক পরিবর্তনযোগ্য স্ট্রিং তৈরি করা জড়িত:

//make mutable string
NSMutableString *stringToTrim = [@" i needz trim " mutableCopy];

//pass it by reference to CFStringTrimSpace
CFStringTrimWhiteSpace((__bridge CFMutableStringRef) stringToTrim);

//stringToTrim is now "i needz trim"

13

আপনি এখানে যান ...

- (NSString *)removeEndSpaceFrom:(NSString *)strtoremove{
    NSUInteger location = 0;
    unichar charBuffer[[strtoremove length]];
    [strtoremove getCharacters:charBuffer];
    int i = 0;
    for(i = [strtoremove length]; i >0; i--) {
        NSCharacterSet* charSet = [NSCharacterSet whitespaceCharacterSet];
        if(![charSet characterIsMember:charBuffer[i - 1]]) {
            break;
        }
    }
    return [strtoremove substringWithRange:NSMakeRange(location, i  - location)];
}

সুতরাং এখন এটি কল। মনে করুন আপনার কাছে একটি স্ট্রিং রয়েছে যার সামনে এবং স্পেসগুলি শেষে রয়েছে এবং আপনি কেবল প্রান্তটি সরিয়ে ফেলতে চান, আপনি এটিকে কল করতে পারেন:

NSString *oneTwoThree = @"  TestString   ";
NSString *resultString;
resultString = [self removeEndSpaceFrom:oneTwoThree];

resultString তারপরে শেষে কোনও স্পেস থাকবে না।


8

সুইফটে একটি স্ট্রিংয়ের শুরু এবং শেষ থেকে সাদা অংশটি সরাতে:

সুইফট 3

string.trimmingCharacters(in: .whitespacesAndNewlines)

পূর্ববর্তী সুইফ্ট সংস্করণ

string.stringByTrimmingCharactersInSet(.whitespaceAndNewlineCharacterSet()))

1
এটি কি সমস্ত সাদা স্থান এবং নিউলাইন চরিত্রগুলিকে ছাঁটাচ্ছে না? প্রশ্নটি জিজ্ঞাসা করে কীভাবে শেষ থেকে ছাঁটা যায়।
জর্গোস অ্যাথ

@ জর্গোসএথ এটি কোনও স্ট্রিংয়ের শুরু বা শেষ থেকে কেবল অক্ষরগুলি ছাঁটাইতে চলেছে। এর জন্য অ্যাপল ডকুমেন্টেশন থেকে stringByTrimmigCharactersInSet:- "প্রদত্ত চরিত্রের সেটটিতে থাকা রিসিভার অক্ষরের উভয় প্রান্ত থেকে সরিয়ে একটি নতুন স্ট্রিং তৈরি করে" " বিকাশকারী.অ্যাপল.
com

@ জিয়েরগোস এটিও ঠিক সুইফটে গৃহীত উত্তর হিসাবে ঠিক একই কোড।
--আটসিয়া জোশুয়া

প্রশ্নটি শেষ থেকে সরিয়ে দেওয়ার বিষয়ে ছিল। এই উত্তরটি শুরু এবং শেষ থেকে সরিয়ে দেয়। সুতরাং এটি কোনও বৈধ উত্তর নয়।
প্যাট্রিক

8
NSString *trimmedString = [string stringByTrimmingCharactersInSet:
                              [NSCharacterSet whitespaceAndNewlineCharacterSet]];
//for remove whitespace and new line character

NSString *trimmedString = [string stringByTrimmingCharactersInSet:
                              [NSCharacterSet punctuationCharacterSet]]; 
//for remove characters in punctuation category

আরও অনেক ক্যারেক্টারসেট রয়েছে। আপনার প্রয়োজন অনুসারে এটি পরীক্ষা করুন।


1
এটি কি সমস্ত সাদা স্থান এবং নিউলাইন চরিত্রগুলিকে ছাঁটাচ্ছে না? প্রশ্নটি জিজ্ঞাসা করে কীভাবে শেষ থেকে ছাঁটা যায়।
জর্গোস অ্যাথ

@ জিয়েরগোস-অ্যাথ - হ্যাঁ, এটি শেষ স্থান থেকে সাদা স্থানটি সরিয়ে দেয়
g212gs

প্রশ্নটি শেষ থেকে সরিয়ে দেওয়ার বিষয়ে ছিল। এই উত্তরটি শুরু এবং শেষ থেকে সরিয়ে দেয়। সুতরাং এটি কোনও বৈধ উত্তর নয়।
প্যাট্রিক

4

সুইফ্ট সংস্করণ

স্ট্রিংয়ের শেষে কেবল ফাঁকা স্থানগুলি:

private func removingSpacesAtTheEndOfAString(var str: String) -> String {
    var i: Int = countElements(str) - 1, j: Int = i

    while(i >= 0 && str[advance(str.startIndex, i)] == " ") {
        --i
    }

    return str.substringWithRange(Range<String.Index>(start: str.startIndex, end: advance(str.endIndex, -(j - i))))
}

স্ট্রিংয়ের উভয় পাশে ফাঁকা স্থানগুলি:

var str: String = " Yolo "
var trimmedStr: String = str.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())

1
প্রশ্নটি শেষের দিকে ট্রিমিংয়ের বিষয়ে। আপনার কোড উভয় পক্ষ ছাঁটাই।
JakubKnejzlik

এই কোডটি সংকলন করে না। পদ্ধতিগুলি গণনাসমূহ () এবং অগ্রিম () সংজ্ঞায়িত হয় না।
পেটারসিন

4

এটি আপনার পছন্দের কেবল অনুসরণকারী অক্ষরগুলি সরিয়ে ফেলবে।

func trimRight(theString: String, charSet: NSCharacterSet) -> String {

    var newString = theString

    while String(newString.characters.last).rangeOfCharacterFromSet(charSet) != nil {
        newString = String(newString.characters.dropLast())
    }

    return newString
}

3

সুইফটে

স্ট্রিংয়ের উভয় দিক থেকে স্থান এবং নিউলাইনটি ছাঁটাতে:

var url: String = "\n   http://example.com/xyz.mp4   "
var trimmedUrl: String = url.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())

3

উদ্দেশ্য-সিতে উভয় প্রান্তের পরিবর্তে কেবল একটি প্রান্তকে ছাঁটাই করার সহজ সমাধান:

@implementation NSString (category)

/// trims the characters at the end
- (NSString *)stringByTrimmingSuffixCharactersInSet:(NSCharacterSet *)characterSet {
    NSUInteger i = self.length;
    while (i > 0 && [characterSet characterIsMember:[self characterAtIndex:i - 1]]) {
        i--;
    }
    return [self substringToIndex:i];
}

@end

এবং শুধুমাত্র সূচনাটি ছাঁটাই করার জন্য একটি প্রতিসম ইউটিলিটি:

@implementation NSString (category)

/// trims the characters at the beginning
- (NSString *)stringByTrimmingPrefixCharactersInSet:(NSCharacterSet *)characterSet {
    NSUInteger i = 0;
    while (i < self.length && [characterSet characterIsMember:[self characterAtIndex:i]]) {
        i++;
    }
    return [self substringFromIndex:i];
}

@end

3

সমস্ত পেছনের শ্বেতস্পেস অক্ষরগুলি ছাঁটাতে (আমি অনুমান করছি যে এটি আসলে আপনার উদ্দেশ্য), এটি করার জন্য নীচেরটি একটি খুব পরিষ্কার এবং সংক্ষিপ্ত উপায় way

সুইফট 5:

let trimmedString = string.replacingOccurrences(of: "\\s+$", with: "", options: .regularExpression)

উদ্দেশ্য গ:

NSString *trimmedString = [string stringByReplacingOccurrencesOfString:@"\\s+$" withString:@"" options:NSRegularExpressionSearch range:NSMakeRange(0, string.length)];

একটি রেখা, রেগেস ড্যাশ সহ।


1

সমাধানটি এখানে বর্ণিত হয়েছে: এনএসএসস্ট্রিংয়ের ডান প্রান্ত থেকে সাদা স্থান কীভাবে সরিয়ে নেওয়া যায়?

নিম্নলিখিত বিভাগগুলিতে এনএসএসস্ট্রিং যুক্ত করুন:

- (NSString *)stringByTrimmingTrailingCharactersInSet:(NSCharacterSet *)characterSet {
    NSRange rangeOfLastWantedCharacter = [self rangeOfCharacterFromSet:[characterSet invertedSet]
                                                               options:NSBackwardsSearch];
    if (rangeOfLastWantedCharacter.location == NSNotFound) {
        return @"";
    }
    return [self substringToIndex:rangeOfLastWantedCharacter.location+1]; // non-inclusive
}

- (NSString *)stringByTrimmingTrailingWhitespaceAndNewlineCharacters {
    return [self stringByTrimmingTrailingCharactersInSet:
            [NSCharacterSet whitespaceAndNewlineCharacterSet]];
}

এবং আপনি এটি যেমন ব্যবহার করুন:

[yourNSString stringByTrimmingTrailingWhitespaceAndNewlineCharacters]

0

আমি এই ফাংশনটি নিয়ে এসেছি, যা মূলত অ্যালেক্সের উত্তরের একটির সাথে একই রকম আচরণ করে:

-(NSString*)trimLastSpace:(NSString*)str{
    int i = str.length - 1;
    for (; i >= 0 && [str characterAtIndex:i] == ' '; i--);
    return [str substringToIndex:i + 1];
}

whitespaceCharacterSetস্থান ছাড়াও ট্যাব চরিত্রটিও অন্তর্ভুক্ত থাকে যা আমার ক্ষেত্রে উপস্থিত হতে পারে নি। সুতরাং আমি অনুমান করি যে একটি সাধারণ তুলনা যথেষ্ট হবে।


-1

স্ট্রিং = "টেস্ট ট্রিমড স্ট্রিং"

নীচে কোড শ্বেত স্থান এবং নতুন লাইন ব্যবহার সরানোর জন্য: -

আসুন str_trimmed = yourString.trimmingCharacters (এতে:। whitespacesAndNewlines)

কোডের নীচে স্ট্রিং থেকে কেবল স্পেস সরিয়ে নেওয়ার জন্য: -

চলুন str_trimmed = আপনার স্ট্রিং.ট্রিমিংচ্যাকার্টারস (এতে:। সাদা স্থান)


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.