對於我正在處理的應用程序,我需要檢查一個文本字段是否僅包含字母A,T,C或G.此外,我想進行專門的錯誤任何其他輸入字符的消息。例如)「不要放入空格。」或「字母b不是可接受的值」。我已經閱讀了其他一些這樣的帖子,但他們是字母數字,我只想指定字符。檢查特定字符的Objective-C字符串
回答
一種方法,遠離獨特:
NString
有方法來尋找子,表示爲偏移位置&的NSRange
,從人物在給定的NSCharacterSet
組成。
的一組應該是字符串什麼:
NSCharacterSet *ATCG = [NSCharacterSet characterSetWithCharactersInString:@"ATCG"];
和SET什麼不應該:
NSCharacterSet *invalidChars = [ATCG invertedSet];
現在,您可以搜索包括invalidChars
的任何字符範圍:
NSString *target; // the string you wish to check
NSRange searchRange = NSMakeRange(0, target.length); // search the whole string
NSRange foundRange = [target rangeOfCharacterFromSet:invalidChars
options:0 // look in docs for other possible values
range:searchRange];
如果沒有無效字符,則foundRange.location
將等於NSNotFound
,否則您更改檢查foundRange
中的字符範圍並生成您的專用錯誤消息。
重複此過程,根據foundRange
更新searchRange
,查找所有無效字符的運行。
您可以將找到的無效字符累積到一個集合中(可能爲NSMutableSet
),並在最後生成錯誤消息。
您還可以使用正則表達式,請參閱NSRegularExpressions
。
等等HTH
附錄
還有就是要解決這個問題一個非常簡單的方式,但我並沒有把它作爲你給的字母建議我可能要處理非常長的字符串並且使用上述提供的方法可能是有價值的勝利。但是您的評論後,第二個想法,也許我應該包括它:
NSString *target; // the string you wish to check
NSUInteger length = target.length; // number of characters
BOOL foundInvalidCharacter = NO; // set in the loop if there is an invalid char
for(NSUInteger ix = 0; ix < length; ix++)
{
unichar nextChar = [target characterAtIndex:ix]; // get the next character
switch (nextChar)
{
case 'A':
case 'C':
case 'G':
case 'T':
// character is valid - skip
break;
default:
// character is invalid
// produce error message, the character 'nextChar' at index 'ix' is invalid
// record you've found an error
foundInvalidCharacter = YES;
}
}
// test foundInvalidCharacter and proceed based on it
HTH
使用NSRegulareExpression這樣。
NSString *str = @"your input string";
NSRegularExpression *regEx = [NSRegularExpression regularExpressionWithPattern:@"A|T|C|G" options:0 error:nil];
NSArray *matches = [regEx matchesInString:str options:0 range:NSMakeRange(0, str.length)];
for (NSTextCheckingResult *result in matches) {
NSLog(@"%@", [str substringWithRange:result.range]);
}
此外,對於選項參數,你必須在文檔中找一個合適的選擇。你
究竟是for循環做什麼? – MacBoss123541
上面的方法返回字符串中的所有匹配項,因此您必須循環它們並分別提取每個匹配項。 –
另外我注意到我沒有提供圖案!如果要匹配A,T,C或G,請使用@「A | T | C | G」作爲模式。 –
- 1. 檢查輸入的特定字符串
- 2. 如何檢查字符串中的特定字符?
- 3. 檢查字符串中的特定字符
- 4. 檢查字符串包含特定的順序字符
- 5. 檢查一個字符串是否包含特定字符
- 6. 如何檢查特定字符前是否有字符串
- 7. 檢查字符串的子字符串
- 8. 檢查字符串包含字符串
- 9. 查找字符串中的特定特殊字符
- 10. 字母字符檢查字符串
- 11. 想法檢查字符串的某些字符的字符串檢查器?
- 12. 如何檢查另一個源字符串中的特定字符串
- 13. 如何檢查字符串中是否存在特定的子字符串?
- 14. RegEx - 檢查字符串是否包含特定的字符串失敗?
- 15. 如何檢查字符串數組特定的單元格字符串長度?
- 16. 如何檢查一個字符串是否包含特定的子字符串
- 17. 如何檢查字符串數組是否包含特定的字符串?
- 18. 用特定的起始字符串和結束字符串檢查文件名?
- 19. PostgreSQL的 - 檢查給定的字符串處理字符串
- 20. 檢查某些字符的字符串
- 21. 檢查字符串包含的字符
- 22. 檢查字符串的字符
- 23. 檢查字符串上的字符
- 24. Python:檢查字符串中的字符
- 25. 檢查字符串中的字符
- 26. 如何檢查字符的字符串?
- 27. 檢查字符串的某些字符
- 28. 從字符串值中查找特定的字符串數組
- 29. 查找特定字符串後出現的字符串
- 30. 查找字符串中的特定子字符串
如何檢查一系列字符?你可以告訴我,我仍然試圖學習所有這些目標 - C的東西,其中很多。 – MacBoss123541
再次有很多種方法,但最簡單的層次是'NSString'上的'characterAtIndex:'方法 - 範圍會給出起始索引和長度,因此一個簡單的循環可以依次檢查每個字符。有一些方法可以讓你將範圍作爲一個'NSString',等等。閱讀'NSString',或者'NSMutableSet',doc頁面。 – CRD