我想了解如何在Swift中获取字符串的一部分。我正在寻找Mid$,Right$和Left$函数的Swift等效函数。任何帮助都将不胜感激。
我想了解如何在Swift中获取字符串的一部分。我正在寻找Mid$,Right$和Left$函数的Swift等效函数。任何帮助都将不胜感激。
Swift 4, Swift5
现代API采用以下语法:
let str = "Hello world!"
let prefix = String(str.prefix(1))
let suffix = String(str.suffix(1))
编辑:此回答发布于2014年,已经过时,我建议参考Vyacheslav的答案
Left的等效函数是substringToIndex
例如(直接引用这个网站的内容)
let myString = "ABCDEFGHI"
let mySubstring = (myString.substringToIndex(2))
//This grabs the first 2 digits of the string and stops there,
//which returns "AB"
Right的(大致)相当于substringFromIndex
例如:(直接引用自同一网站)
let myString = "ABCDEFGHI"
let mySubstring = (myString.substringFromIndex(2))
//This jumps over the first 2 digits of the string and grabs the rest,
//which returns "CDEFGHI"
var myString = "abcdefghijklmnopqrstuvwxyz987654321"
func leftString(theString: String, charToGet: Int) ->String{
var indexCount = 0
let strLen = countElements(theString)
if charToGet > strLen { indexCount = strLen } else { indexCount = charToGet }
if charToGet < 0 { indexCount = 0 }
let index: String.Index = advance(theString.startIndex, indexCount)
let mySubstring:String = theString.substringToIndex(index)
return mySubstring
}
func rightString(theString: String, charToGet: Int) ->String{
var indexCount = 0
let strLen = countElements(theString)
var charToSkip = strLen - charToGet
if charToSkip > strLen { indexCount = strLen } else { indexCount = charToSkip }
if charToSkip < 0 { indexCount = 0 }
let index: String.Index = advance(theString.startIndex, indexCount)
let mySubstring:String = theString.substringFromIndex(index)
return mySubstring
}
func midString(theString: String, startPos: Int, charToGet: Int) ->String{
let strLen = countElements(theString)
var rightCharCount = strLen - startPos
var mySubstring = rightString(theString, rightCharCount)
mySubstring = leftString(mySubstring, charToGet)
return mySubstring
}
var myLeftString = leftString(myString, 3)
// returns "abc"
var myRightString = rightString(myString, 5)
// returns "54321"
var myMidString = midString(myString, 3, 5)
// returns "defgh"
这里的解决方案似乎都已经过时了。以下是我在Swift 2.0中获取字符串左侧和右侧指定数量字符的方法:
public extension String
{
public var length: Int { return self.characters.count } // Swift 2.0
public func substringToCharactersCount(count: Int) -> String?
{
// Discussion: Equivalent to "left". Gets the beginning portion of the string with the specified number of characters. It is friendly to having a count that exceeds the length of the string, returning the portion that it can.
// returnString
var returnString: String?
// length
let length = self.length
if length > 0
{
// useCount
let useCount: Int
if count > length
{
useCount = length
}
else
{
useCount = count
}
if useCount > 0
{
// useEndIndex
let useEndIndex = self.startIndex.advancedBy(useCount)
returnString = self.substringToIndex(useEndIndex)
}
}
return returnString
}
public func substringFromCharactersCount(count: Int) -> String?
{
// Discussion: Equivalent to "right". Gets the ending portion of the string with the specified number of characters. It is friendly to having a count that exceeds the length of the string, returning the portion that it can.
// returnString
var returnString: String?
// length
let length = self.length
if length > 0
{
// useCount
let useCount: Int
if count > length
{
useCount = length
}
else
{
useCount = count
}
if useCount > 0
{
// useStartIndex
let useStartIndex = self.startIndex.advancedBy(length - useCount)
returnString = self.substringFromIndex(useStartIndex)
}
}
return returnString
}
}