Я делаю специальную систему сохранения файлов для 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
}