我正在開發一個應用程序,它以一種名爲「泰米爾語」的語言進行輸入。所以爲了找到字符串中任何特定字符的範圍,我使用了下面的代碼。NSRange中有方言的字符串
var range = originalWord.rangeOfString("\(character)")
println("\(range.location)")
所以這工作正常,除了一些情況。
有一些這樣的字符 - >í,ó。 //我只是說一個例子。
所以像這樣的組合,在其他語言中有幾個元音符號。
如果我有這個詞「alv`in」
//這是阿爾文,但我用「V」用方言。 如果我在xcode中打印這些字符的unicde值,我會得到每個unicode。但對於「v」,將會有兩個unicode值,但它被視爲單個字符。
所以,如果我檢查上述代碼中的這個字符。我得到以下結果。在我的程序中出現錯誤。
range.location // 2147483647,它不是一個數字。爲什麼。?
但是對於其他字符,它只是輸出正確的Int值。 //像「3」這樣的單個數字
任何人都知道如何完成這項工作。如果我使用帶有底角的字符,我該怎麼做到這一點
。?
代碼下面給出
// userInput = "இல்லம்"
var originalWord : NSString = ("இல்லம்")
var originalArray = Array("இல்லம்")
var userInputWord = Array(String(userInput))
// -------------------------------------------
for character in String(userInput)
{
switch character
{
case originalArray[0] :
// here matches first character of the userinput to the original word first character
// the character exists at the 0th index
var range = originalWord.rangeOfString("\(character)")
if range.location == 0
{
// same character in the same index
// correctValue increase by one (cow Value)
cowValue += 1
}
else
{
// same character but in the different index
// Wrong value increase by one (bull Value)
bullValue += 1
}
case originalArray[1] :
// here matches first character of the userinput to the original word first character
// the character exists at the 1th index
var range = originalWord.rangeOfString("\(character)")
println("\(range.location)") // here i get he long Int Value instead of single digit
if range.location == 1
{
// same character in the same index
// correctValue increase by one (cow Value)
cowValue += 1
}
else
{
// same character but in the different index
// Wrong value increase by one (bull Value)
bullValue += 1
}
2147483647實際上是MAX_INT - 分配給uint而不是-1的值。也就是說,'originalWord.rangeOfString'返回「未找到」。 – 2014-10-09 15:00:45
@IanMacDonald如果你這樣說,那麼我怎麼才能找到一個帶有方言的字母的range.location。? (對於單個字符有兩個unicode值) – 2014-10-09 15:03:32
您確定要查找的字符是以您提供的方式指定的嗎?使用'characterAtIndex:' ?在循環中單獨輸出字符時會得到什麼結果? – 2014-10-09 15:07:32