How to remove hexadecimal characters from NSString

前端 未结 3 1677
时光取名叫无心
时光取名叫无心 2021-01-22 14:49

I am facing one issue related some hexa value in string, i need to remove hexadecimal characters from NSString.

The problem is when i print object it prints as \"BLANK

相关标签:
3条回答
  • 2021-01-22 15:33

    First, don't trust the Xcode debugger. Print characterAtIndex:0 to be sure that you really have what you think you have.

    Second, deleting stuff is all good and well, but you are doctoring around with a symptom. You should really try to figure out where the contents of _lastUpdatedBy comes from and why it is what it is. You might have a serious bug here and trying to cover it up. For example, there might be a bug that stores rubbish data instead of the correct data, and you are just covering up for that bug.

    0 讨论(0)
  • 2021-01-22 15:39

    As your dataset clearly has garbage values, You can use this method to check if your string is valid or not. Define your validation criteria and simply don't entertain the values which are garbage. But as suggested before by gnasher, you should rather look for the bug which is causing insertion of garbage data in your database. Once you have done that, check if the input string matches your defined criteria. If it does, do what you want. If it doesn't, simply move on.

    -(BOOL) isValidString: (NSString*) input
    {
             NSMutableCharacterSet *validSpecialChars = [NSMutableCharacterSet characterSetWithCharactersInString:@"_~.,"];//Add your desired characters here
             [validSpecialChars formUnionWithCharacterSet:[NSCharacterSet alphanumericCharacterSet]];
             return [[input stringByTrimmingCharactersInSet:validSpecialChars] isEqualToString:@""];
    }
    

    If your string will contain only your defined characters, it will return true. If it contains any other characters (garbage or invalid) it will return false.

    0 讨论(0)
  • 2021-01-22 15:49

    I'm not sure exactly what you are looking for, but if you want to remove all the control characters then

    string = [[string componentsSeparatedByCharactersInSet:[NSCharacterSet controlCharacterSet]] componentsJoinedByString:@""]
    

    If you need to be faster and are sure the control characters are only at the beginning and ending of a string then

    string = [string stringByTrimmingCharactersInSet:[NSCharacterSet controlCharacterSet]];
    

    NOTE: Removing all control characters will remove all new lines (\n)!


    From NSCharacterSet Class Reference:

    These characters are specifically the Unicode values U+0000 to U+001F and U+007F to U+009F.

    The value you are having a problem with is \x06 which is U+0006.


    If you want to remove just \x06, then you can always create a characters set just for it.

    NSCharacterSet *hex6 = [NSCharacterSet characterSetWithCharactersInString:@"\x06"];
    string = [[string componentsSeparatedByCharactersInSet:hex6] componentsJoinedByString:@""]
    
    0 讨论(0)
提交回复
热议问题