J'ai un texte qui dit "Bonjour tout le monde. Le monde est si beau." Je veux le changer en "Bonjour monde . Le monde est si beau."

J'ai essayé le code suivant mais il ne change que le premier mot.

 let string : NSString =  "Hello world. The world is so beautiful."
 let attributedString = NSMutableAttributedString(string: string! as String, attributes: [NSFontAttributeName:UIFont.systemFont(ofSize: 17.0)])
 let italicFontAttribute = [NSFontAttributeName: UIFont.italicSystemFont(ofSize: 17.0)]
 attributedString.addAttributes(italicFontAttribute, range: (string!.range(of: "world")))
1
Amith Shaju 3 avril 2017 à 08:43

2 réponses

Meilleure réponse

Une autre solution ajoutée aux autres, mais qui effectue une recherche sur le terme spécifique et remplace toutes les occurrences, pourrait vous aider à créer une méthode générale pour cela:

var sampleString : String = "Hello world. The world is so beautiful."
let searchTerm : String = "world"

var searchRange : NSRange = NSMakeRange(0, sampleString.characters.count)
var positionRange : NSRange = ((sampleString as NSString).substring(with: searchRange) as NSString).range(of: searchTerm)
var actualRange : NSRange = positionRange

var attributedString : NSMutableAttributedString = NSMutableAttributedString(string: sampleString)

while (positionRange.location != NSNotFound)
{
    // Update attributed string
    actualRange.location = searchRange.location + positionRange.location
    attributedString.addAttributes([ NSFontAttributeName : UIFont(name: "Helvetica-Italic", size: CGFloat(22)) ], range: actualRange)

    // Proceed to the next position
    searchRange.location += positionRange.location + searchTerm.characters.count
    searchRange.length = sampleString.characters.count - searchRange.location

    positionRange = ((sampleString as NSString).substring(with: searchRange) as NSString).range(of: searchTerm)
}
1
unkgd 3 avril 2017 à 06:11
attributedString.addAttributes(italicFontAttribute, range: (string!.range(of: "world")))
attributedString.addAttributes(italicFontAttribute, range: (string!.range(of: "World")))

Essayez cette charte capitale et petite à la fois trouver dans la chaîne.

0
Jayesh Miruliya 3 avril 2017 à 05:57