Substring/Top and tail: Difference between revisions

Added section for Swift (with some extension function sugar)
(Nimrod -> Nim)
(Added section for Swift (with some extension function sugar))
Line 1,060:
- String.substring(str, 1, String.size str - 2);
val it = "bcd" : string</lang>
 
=={{header|Swift}}==
The basic version is shown below, but it is rather ugly.
<lang swift>let txt = "0123456789"
txt.substringFromIndex(advance(txt.startIndex, 1))
txt.substringToIndex(advance(txt.endIndex, -1))
txt.substringWithRange(Range<String.Index>(start: advance(txt.startIndex,1), end: advance(txt.endIndex, -1))) </lang>
 
However it is rather easy to extend the String handling, so with some simple extension methods this could be:
 
<lang>extension String {
/** Positive numbers give index from start of text, whilst negative numbers give index from end of text */
func index(index: Int) -> String.Index {
return advance( index < 0 ? self.endIndex : self.startIndex, index)
}
/** Left portion of text to index */
func left(index : Int) -> String {
return self.substringFromIndex(self.index(index))
}
 
/** Right portion of text from index */
func right(index : Int) -> String{
return self.substringToIndex(self.index(index))
}
/** From left index until right index */
func mid(start: Int, _ end: Int) -> String {
return self.substringWithRange(Range<String.Index>(start: self.index(start), end: self.index(end)))
}
}
 
let txt = "0123456789"
 
txt.right(1) // Right part without first character
txt.left(-1) // Left part without last character
txt.mid(1,-1) // Middle part without first and last character</lang>
 
=={{header|Tcl}}==
Anonymous user