Home replacingOccurrences not working on Device
Reply: 0

replacingOccurrences not working on Device

user46186
1#
user46186 Published in September 21, 2018, 3:02 am

I made a trimming whitespace code to remove whitespace in the textfield input, but here is a problem, on the emulator it works fine and removes whitespace but on the device, it won't work at all here is my code:

var number = numberTxtField.text
if number!.hasPrefix("+98") {
    let start = number!.index(number!.startIndex, offsetBy: 0);
    let end = number!.index(number!.startIndex, offsetBy: 3);
    number!.replaceSubrange(start..<end, with: "0")
    self.trimmed = number!.replacingOccurrences(of: " ", with: "")
    print(self.trimmed)
    let pattern = "^[0-9]+$"
    let predicate = NSPredicate(format: "self MATCHES [c] %@", pattern)
    if predicate.evaluate(with: self.trimmed) {
        print("Valid")
        if self.trimmed == nil && self.trimmed == "" {
            return
        }
        numberTxtField.resignFirstResponder()
        self.view.endEditing(true)
        SendNumber()
    }
}

When I type +98 912 123 1234 on the emulator it returns 09121231234 and when I do it on my device it returns 0 912 123 1234.

Does anyone know why?

this is my result on my device (iPhone 6s with ios 11.2.5):

this is my result on the emulator (iPhone 8 iOS 11.2):

share|improve this question
  • Simulator & Device doesn't make any differences in this case – Prashant Tukadiya Feb 14 at 6:22
  • 1
    You can directly remove white space using let trimmedString = string.trimmingCharacters(in: .whitespaces) – Prashant Tukadiya Feb 14 at 6:23
  • Can you simplify the code and produce the same problem? For example, try getting rid of everything after the first print(). Does replacingOccurrences() still fail on device? Also, in case some other code could be modifying self.trimmed, try switching to a local variable as the result of replacingOccurrences(). Let's get to the crux of the fail. – Smartcat Feb 14 at 6:24
  • I have used your code and it's working fine in device also. – Sagar Chauhan Feb 14 at 6:34
  • @Prashant Tukadiya, trimming character will remove whitespaces around from text, not from between. – Sagar Chauhan Feb 14 at 6:35

active oldest votes

Your Answer

StackExchange.ifUsing("editor", function () { StackExchange.using("externalEditor", function () { StackExchange.using("snippets", function () { StackExchange.snippets.init(); }); }); }, "code-snippets"); StackExchange.ready(function() { var channelOptions = { tags: "".split(" "), id: "1" }; initTagRenderer("".split(" "), "".split(" "), channelOptions); StackExchange.using("externalEditor", function() { // Have to fire editor after snippets, if snippets enabled if (StackExchange.settings.snippets.snippetsEnabled) { StackExchange.using("snippets", function() { createEditor(); }); } else { createEditor(); } }); function createEditor() { StackExchange.prepareEditor({ heartbeatType: 'answer', convertImagesToLinks: true, noModals: false, showLowRepImageUploadWarning: true, reputationToPostImages: 10, bindNavPrevention: true, postfix: "", onDemand: true, discardSelector: ".discard-answer" ,immediatelyShowMarkdownHelp:true }); } });
 
StackExchange.ready( function () { StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f48780635%2freplacingoccurrences-not-working-on-device%23new-answer', 'question_page'); } );

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Browse other questions tagged ios swift or ask your own question.

StackExchange.ready(function(){$.get('/posts/48780635/ivc/6ae4');});
StackExchange.ready(function () { StackExchange.responsiveness.addSwitcher(); }) (function(i, s, o, g, r, a, m) { i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function() { (i[r].q = i[r].q || []).push(arguments) }, i[r].l = 1 * new Date(); a = s.createElement(o), m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m); })(window, document, 'script', 'https://www.google-analytics.com/analytics.js', 'ga'); StackExchange.ready(function () { StackExchange.ga.init({ sendTitles: true, tracker: window.ga, trackingCodes: [ 'UA-108242619-1' ] }); StackExchange.ga.setDimension('dimension2', '|ios|swift|'); StackExchange.ga.setDimension('dimension3', 'Questions/Show'); StackExchange.ga.trackPageView(); }); /**/ var _qevents = _qevents || [], _comscore = _comscore || []; (function() { var ssl = 'https:' == document.location.protocol, s = document.getElementsByTagName('script')[0], qc = document.createElement('script'); qc.async = true; qc.src = (ssl ? 'https://secure' : 'http://edge') + '.quantserve.com/quant.js'; s.parentNode.insertBefore(qc, s); _qevents.push({ qacct: "p-c1rF4kxgLUzNc" }); /**/ var sc = document.createElement('script'); sc.async = true; sc.src = (ssl ? 'https://sb' : 'http://b') + '.scorecardresearch.com/beacon.js'; s.parentNode.insertBefore(sc, s); _comscore.push({ c1: "2", c2: "17440561" }); })();
You need to login account before you can post.

About| Privacy statement| Terms of Service| Advertising| Contact us| Help| Sitemap|
Processed in 0.309568 second(s) , Gzip On .

© 2016 Powered by mzan.com design MATCHINFO