Split string after found symbol # or number in swift ios [duplicate] - swift

This question already has answers here:
Split a String into an array in Swift?
(40 answers)
Closed 6 years ago.
I want get value before symbol # or number in swift. I have email which is john#gmail.com. I want get john only. Another example is peter34#gmail.com. I want get peter only.

Use components(separatedBy:) passing it a CharacterSet composed of # and the digits, and then use first to get the first part of the symbol:
let emails = ["john#gmail.com", "peter34#gmail.com"]
for email in emails {
if let name = email.components(separatedBy: CharacterSet(charactersIn: ("#0123456789"))).first {
print(name)
}
}
Output:
john
peter

try this
let EMAIL= "peter34#gmail.com"
let EMAILARR= EMAIL.characters.split{$0 == "#"}.map(String.init)
EMAILARR[0] // to get peter34
EMAILARR[1] // to get gmail.com

Related

Swift filter map reduce which option [duplicate]

This question already has answers here:
How to get the first character of each word in a string?
(11 answers)
Closed 1 year ago.
I have quick question about Swift algorithm, assuming I have a string “New Message” which option I need to use to get just initials NM ?
I would use map to get the first character of each word in the string, then use reduce to combine them.
let string = "New Message"
let individualWords = string.components(separatedBy: " ")
let firstCharacters = individualWords.map { $0.prefix(1) }.reduce("", +)
print("firstCharacters is \(firstCharacters)")
Result:
firstCharacters is NM
Edit: Per #LeoDabus' comment, joined is more concise than reduce("", +), and does the same thing.
let firstCharacters = individualWords.map { $0.prefix(1) }.joined()

How to replace a substring in a string in Swift [duplicate]

This question already has answers here:
Any way to replace characters on Swift String?
(23 answers)
Closed 2 years ago.
my code is like the following:
let fileName = "/users/lezi/downloads/Zootopia.srt"
var srtFile = try? String(contentsOfFile: fileName)
let range = srtFile?.range(of: "00:00:59,825")
print(srtFile?[range!])
srtFile?.replaceSubrange(range!, with: "00:00:59,826")
print(srtFile?[range!])
I hope the "00:00:59,825" is replaced to "00:00:59,826", but the print is "Optional("\r\n\r\n2")\n", some characters just before "00:00:59,825"
Regardless of use case. The common syntax to replace the substring is:
str.replacingOccurrences(of: "replace_this", with: "with_this")
where replace_thisis the text string you want to replace and ```with_this`` is the new sub-string to insert.
You can try using replacingOccurrences(of:with:).
Returns a new string in which all occurrences of a target string in the receiver are replaced by another given string
sample example :
let str = "Swift 4.0 is the best version of Swift to learn, so if you're starting fresh you should definitely learn Swift 4.0."
let replaced = str.replacingOccurrences(of: "4.0", with: "5.0")

Swift – How to find out if a string contains several identical characters? [duplicate]

This question already has answers here:
Number of occurrences of substring in string in Swift
(12 answers)
how to count specific items in array in swift
(3 answers)
Closed 3 years ago.
Here's a simple code that let us find out if a string contains a dot characters (we don't know how many, we just know that it contains it):
var number: String = "3.14"
if number.contains(".") {
print("The string contains a dot character")
} else {
print("There's no dot character")
}
But imagine a situation where user wrongly puts 2 or 3 dots in a line, like this:
var number: String = "3...14"
How to check whether a string contains one dot or several ones?
How to count all the dots in the string?
You can use filter(_:) on the string and count to get the number of dots:
let str = "3..14"
switch str.filter({ $0 == "." }).count {
case 0:
print("string has no dots")
case 1:
print("string has 1 dot")
default:
print("string has 2 or more dots")
}

Parsing a string to get last name in Swift [duplicate]

This question already has answers here:
Split a String into an array in Swift?
(40 answers)
Closed 5 years ago.
I'm writing a app where I need to present the second name of a person on the screen.
The names are always "firstname space lastname" as in:
let str = "Fred Bloggs"
let secondStr = "William Wright"
Can you tell me how to get "Bloggs" out of that first string and "Wright" out of the second string, not knowing the index of Bloggs. All the examples I've seen seem to assume you know the index of the position you want to get a substring from.
Thanks.
import Foundation
let fullName = "First Last"
let fullNameArr = fullName.components(separatedBy: " ")
let name = fullNameArr[0]
let lastName = fullNameArr[1]

Convert string that is all caps to only only having first letter of each word caps [duplicate]

This question already has answers here:
How to capitalize each word in a string using Swift iOS
(8 answers)
Closed 5 years ago.
I'm getting strings from a server that is all caps like:
"HELLO WORLD"
but I'm trying to make is so each word is caps on its own like:
"Hello World"
I've tried this:
extension String {
func capitalizingFirstLetter() -> String {
let first = String(characters.prefix(1)).capitalized
let other = String(characters.dropFirst()).lowercased()
return first + other
}
mutating func capitalizeFirstLetter() {
self = self.capitalizingFirstLetter()
}
}
but the result is
"Hello world"
any idea on how to do this?
Apple already did that for you:
print("HELLO WORLD".capitalized)
Documentation: https://developer.apple.com/documentation/foundation/nsstring/1416784-capitalized