Как проверить наличие недопустимых символов на swift. (Недопустимые символы для Windows, Android & IOS) - PullRequest
1 голос
/ 22 апреля 2020

Я делаю специальную систему сохранения файлов для IOS и, возможно, ма c.

Моя программа в основном позволяет пользователю писать имя файла, но прежде чем я это сделаю, мне нужно проверить наличие недопустимых символов для IOS, Windows и Android, так как они все они, вероятно, будут переданы в другую систему по собственному решению пользователя (например, по электронной почте или через USB).

Как правило, если вы попытаетесь перенести какой-либо файл с недопустимым «именем» в другую систему, файл либо будет поврежден, либо не будет передан в систему вообще.

Проблема с моим кодом в том, что он работает ТОЛЬКО, если в строке ОДИН символ. Если в предыдущей ситуации, средство проверки регулярных выражений не обнаруживает ничего, независимо от того, где или сколько там недопустимых символов.

Это мой код.

 //Validates the string for illegal file name characters
    //https://stackoverflow.com/questions/14635391/java-function-to-return-if-string-contains-illegal-characters
    func hasIllegalCharacters(locationNameString: String) -> Bool{
        //do {

            //Pattern pattern = Pattern.compile("[\\\\/:*?\"<>|]");
        let illegalRegEx = "[~#@*+%{}<>\\[\\]|\"\\_^]"
        //let ipAddressRegEx = "|\\?*<\":>+[]/'"
                      let trimmedString = locationNameString.trimmingCharacters(in: .whitespaces)
                      let validateName = NSPredicate(format:"SELF MATCHES %@", illegalRegEx)
                      let isIllegal = validateName.evaluate(with: trimmedString)

        if(isIllegal){
         print("has illegal chars")
        }
        else{
            print("no illegal detected")
        }

            return isIllegal

    }

1 Ответ

2 голосов
/ 22 апреля 2020
extension String {
   var containsSpecialCharacter: Bool {
      let regex = ".*[^A-Za-z0-9].*"
      let testString = NSPredicate(format:"SELF MATCHES %@", regex)
      return testString.evaluate(with: self)
   }
}

Regex создает список всех недопустимых символов и затем testString проверяет, совпадает ли строка с символами в regex. Вернет True или False

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...