मुझे पहले चरित्र को एक स्ट्रिंग से निकालने का एक तरीका चाहिए जो एक स्थान है। मैं स्ट्रिंग के प्रकार के लिए एक विधि या यहां तक कि एक एक्सटेंशन की तलाश कर रहा हूं जिसका उपयोग मैं एक स्ट्रिंग के चरित्र को काटने के लिए कर सकता हूं।
मुझे पहले चरित्र को एक स्ट्रिंग से निकालने का एक तरीका चाहिए जो एक स्थान है। मैं स्ट्रिंग के प्रकार के लिए एक विधि या यहां तक कि एक एक्सटेंशन की तलाश कर रहा हूं जिसका उपयोग मैं एक स्ट्रिंग के चरित्र को काटने के लिए कर सकता हूं।
जवाबों:
व्हाट्सएप के प्रमुख और अनुगामी को हटाने के लिए:
let trimmedString = string.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
स्विफ्ट 3 / स्विफ्ट 4:
let trimmedString = string.trimmingCharacters(in: .whitespaces)
NSCharacterSet.whitespaceAndNewlineCharacterSet()
चाहे तो नईलाइन वर्णों को भी ट्रिम कर सकते हैं।
जब आप सभी प्रकार के व्हाट्सएप को हटाना चाहते हैं तो सही तरीका ( इस SO उत्तर पर आधारित ) है:
extension String {
var stringByRemovingWhitespaces: String {
let components = componentsSeparatedByCharactersInSet(.whitespaceCharacterSet())
return components.joinWithSeparator("")
}
}
extension String {
func removingWhitespaces() -> String {
return components(separatedBy: .whitespaces).joined()
}
}
यह उत्तर तब पोस्ट किया गया था जब प्रश्न सभी व्हाट्सएप को हटाने के बारे में था , प्रश्न को केवल प्रमुख व्हाट्सएप का उल्लेख करने के लिए संपादित किया गया था। यदि आप केवल प्रमुख व्हाट्सएप को हटाना चाहते हैं तो निम्नलिखित का उपयोग करें:
extension String {
func removingLeadingSpaces() -> String {
guard let index = firstIndex(where: { !CharacterSet(charactersIn: String($0)).isSubset(of: .whitespaces) }) else {
return self
}
return String(self[index...])
}
}
यह स्ट्रिंग एक्सटेंशन एक स्ट्रिंग से सभी व्हाट्सएप को हटा देता है, न कि केवल व्हाट्सएप को पीछे छोड़ते हुए ...
extension String {
func replace(string:String, replacement:String) -> String {
return self.replacingOccurrences(of: string, with: replacement, options: NSString.CompareOptions.literal, range: nil)
}
func removeWhitespace() -> String {
return self.replace(string: " ", replacement: "")
}
}
उदाहरण:
let string = "The quick brown dog jumps over the foxy lady."
let result = string.removeWhitespace() // Thequickbrowndogjumpsoverthefoxylady.
स्विफ्ट 3
आप एक स्ट्रिंग में सभी सामान्य रिक्त स्थान को निकालने के लिए बस इस विधि का उपयोग कर सकते हैं (सभी प्रकार के व्हाट्सएप पर विचार नहीं करते हैं):
let myString = " Hello World ! "
let formattedString = myString.replacingOccurrences(of: " ", with: "")
परिणाम होगा:
HelloWorld!
आप regex का उपयोग भी कर सकते हैं।
let trimmedString = myString.stringByReplacingOccurrencesOfString("\\s", withString: "", options: NSStringCompareOptions.RegularExpressionSearch, range: nil)
Swift 3.0+ के लिए अन्य उत्तर देखें। यह अब स्विफ्ट 2.x के लिए एक विरासत का जवाब है
जैसा कि ऊपर बताया गया है, क्योंकि आप पहले चरित्र को हटाने में रुचि रखते हैं ।stringByTrimmingCharactersInSet () उदाहरण विधि अच्छी तरह से काम करेगी:
myString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
आप अपने स्वयं के चरित्र सेट भी कर सकते हैं, द्वारा अपने तार की सीमाओं को ट्रिम करने के लिए, पूर्व:
myString.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "<>"))
वहाँ भी बनाया गया है जिसमें स्ट्रिंग को हटाने या प्रतिस्थापित करने से निपटने के लिए एक अंतर्निहित विधि है, जिसे stringByReplacingOccurrencesOfString (लक्ष्य: स्ट्रिंग, प्रतिस्थापन: स्ट्रिंग) कहा जाता है । यह आपके स्ट्रिंग में कहीं भी होने वाले रिक्त स्थान या किसी भी अन्य पैटर्न को निकाल सकता है
आप विकल्प और सीमाएँ निर्दिष्ट कर सकते हैं, लेकिन इसके लिए आवश्यकता नहीं है:
myString.stringByReplacingOccurrencesOfString(" ", withString: "")
यह आपके स्ट्रिंग में वर्णों के किसी भी दोहराए जाने वाले पैटर्न को हटाने या बदलने का एक आसान तरीका है, और इसे जंजीर बनाया जा सकता है, हालांकि इसके माध्यम से हर बार दक्षता को कम करने के लिए अपने पूरे स्ट्रिंग के माध्यम से एक और पास लेना पड़ता है। तो आप यह कर सकते हैं:
myString.stringByReplacingOccurrencesOfString(" ", withString: "").stringByReplacingOccurrencesOfString(",", withString: "")
... लेकिन इसमें दोगुना समय लगेगा।
.stringByReplacingOccurrencesOfString () Apple साइट से प्रलेखन
इन स्ट्रिंग उदाहरण विधियों का उपयोग करना कभी-कभी एक से अधिक रूपांतरणों के लिए बहुत सुविधाजनक हो सकता है, उदाहरण के लिए यदि आप एक छोटी NSData बूँद को एक पंक्ति में रिक्त स्थान के बिना एक हेक्स स्ट्रिंग में बदलना चाहते हैं, तो आप इसे स्विफ्ट की स्ट्रिंग स्ट्रिंग में निर्मित और कुछ ट्रिमिंग के साथ कर सकते हैं की जगह:
("\(myNSDataBlob)").stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "<>")).stringByReplacingOccurrencesOfString(" ", withString: "")
के लिए तेजी से 3.0
import Foundation
var str = " Hear me calling"
extension String {
var stringByRemovingWhitespaces: String {
return components(separatedBy: .whitespaces).joined()
}
}
str.stringByRemovingWhitespaces // Hearmecalling
मैं इस एक्सटेंशन का उपयोग करता हूं, लचीला और नकल करने के लिए कि यह अन्य संग्रह कैसे करता है:
extension String {
func filter(pred: Character -> Bool) -> String {
var res = String()
for c in self.characters {
if pred(c) {
res.append(c)
}
}
return res
}
}
"this is a String".filter { $0 != Character(" ") } // "thisisaString"
यदि आप सामने (और पीछे) से रिक्त स्थान हटाना चाहते हैं, लेकिन मध्य नहीं है, तो आपको उपयोग करना चाहिए stringByTrimmingCharactersInSet
let dirtyString = " First Word "
let cleanString = dirtyString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
यदि आप स्ट्रिंग में कहीं से भी रिक्त स्थान हटाना चाहते हैं, तो आप stringByReplacing को देखना चाहते हैं ...
" First Word "
आउटपुट "First Word"
)।
स्विफ्ट 4, 4.2 और 5
सामने से अंतरिक्ष निकालें और केवल अंत
let str = " Akbar Code "
let trimmedString = str.trimmingCharacters(in: .whitespacesAndNewlines)
स्ट्रिंग में हर जगह से रिक्त स्थान निकालें
let stringWithSpaces = " The Akbar khan code "
let stringWithoutSpaces = stringWithSpaces.replacingOccurrences(of: " ", with: "")
आप इसे भी आजमा सकते हैं
let updatedString = searchedText?.stringByReplacingOccurrencesOfString(" ", withString: "-")
extension String {
var removingWhitespaceAndNewLines: String {
return removing(.whitespacesAndNewlines)
}
func removing(_ forbiddenCharacters: CharacterSet) -> String {
return String(unicodeScalars.filter({ !forbiddenCharacters.contains($0) }))
}
}
यदि कोई स्ट्रिंग = जैसे से अतिरिक्त स्थान हटाता है "This is the demo text remove extra space between the words."
आप स्विफ्ट 4 में इस फ़ंक्शन का उपयोग कर सकते हैं।
func removeSpace(_ string: String) -> String{
var str: String = String(string[string.startIndex])
for (index,value) in string.enumerated(){
if index > 0{
let indexBefore = string.index(before: String.Index.init(encodedOffset: index))
if value == " " && string[indexBefore] == " "{
}else{
str.append(value)
}
}
}
return str
}
और परिणाम होगा
"This is the demo text remove extra space between the words."
नमस्ते यह देर हो सकती है लेकिन कोशिश करने लायक है। यह एक खेल का मैदान फ़ाइल से है। आप इसे एक स्ट्रिंग एक्सटेंशन बना सकते हैं।
यह स्विफ्ट 5.3 में लिखा गया है
विधि 1:
var str = "\n \tHello, playground "
if let regexp = try? NSRegularExpression(pattern: "^\\s+", options: NSRegularExpression.Options.caseInsensitive) {
let mstr = NSMutableString(string: str)
regexp.replaceMatches(in: mstr, options: [], range: NSRange(location: 0, length: str.count), withTemplate: "")
str = mstr as String
}
Result: "Hello, playground "
विधि 2:
if let c = (str.first { !($0 == " " || $0 == "\t" || $0 == "\n") }) {
if let nonWhiteSpaceIndex = str.firstIndex(of: c) {
str.replaceSubrange(str.startIndex ..< nonWhiteSpaceIndex, with: "")
}
}
Result: "Hello, playground "
स्विफ्ट 3 संस्करण
//This function trim only white space:
func trim() -> String
{
return self.trimmingCharacters(in: CharacterSet.whitespaces)
}
//This function trim whitespeaces and new line that you enter:
func trimWhiteSpaceAndNewLine() -> String
{
return self.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
}
let strFirstName = txtFirstName.text?.trimmingCharacters(in:
CharacterSet.whitespaces)
फिर भी एक और जवाब, कभी-कभी इनपुट स्ट्रिंग में शब्दों के बीच एक से अधिक स्थान हो सकते हैं। यदि आपको शब्दों के बीच केवल 1 स्थान रखने के लिए मानकीकरण करने की आवश्यकता है, तो यह प्रयास करें (स्विफ्ट 4/5)
let inputString = " a very strange text ! "
let validInput = inputString.components(separatedBy:.whitespacesAndNewlines).filter { $0.count > 0 }.joined(separator: " ")
print(validInput) // "a very strange text !"
string = string.filter ({!" ".contains($0) })
बैडमिंटनकैट के जवाब का 3 संस्करण स्विफ्ट
extension String {
func replace(_ string:String, replacement:String) -> String {
return self.replacingOccurrences(of: string, with: replacement, options: NSString.CompareOptions.literal, range: nil)
}
func removeWhitespace() -> String {
return self.replace(" ", replacement: "")
}
}
whitespaceCharacterSet
करना एक सर्वोत्तम अभ्यास है।
class SpaceRemover
{
func SpaceRemover(str :String)->String
{
var array = Array(str)
var i = array.count
while(array.last == " ")
{
var array1 = [Character]()
for item in 0...i - 1
{
array1.append(array[item])
}
i = i - 1
array = array1
print(array1)
print(array)
}
var arraySecond = array
var j = arraySecond.count
while(arraySecond.first == " ")
{
var array2 = [Character]()
if j > 1
{
for item in 1..<j
{
array2.append(arraySecond[item])
}
}
j = j - 1
arraySecond = array2
print(array2)
print(arraySecond)
}
print(arraySecond)
return String(arraySecond)
}
}