请有人帮帮我 .
我试图在现有字符串中添加一个新行(\ n) .
让我们说这个字符串是20个字符长,我想找到一个15到20之间的空格“”然后插入一个新的行(\ n)就在索引到“”(空格)的位置之后
我希望这是有道理的:F
到目前为止,我对此的代码如下
var newString = string
newString[newString.startIndex..< newString.startIndex.advancedBy(16)]
/* let startIndex = newString.startIndex.advancedBy(16)
let endIndex = newString.endIndex
let newRange = startIndex ..< endIndex
print("start index = \(newRange)")*/
let range: Range<String.Index> = newString.rangeOfString(" ")!
let index: Int = newString.startIndex.distanceTo(range.startIndex)
newString.insert("\n", atIndex: newString.startIndex.advancedBy(index))
label.text = newString
如果我尝试以下
let newIndex = name.startIndex.advancedBy(19).distanceTo(range.endIndex)
我收到错误消息
致命错误:无法增加endIndex
我有一种感觉,我在正确的轨道上,但上面将在索引处插入一个新行,其中空格首先出现在字符串中,而不是在例如索引之间 . 15和20
感谢您的帮助
托马斯
2 回答
以下内容查找
15..<END_OF_YOUR_STRING
范围内的第一个空格,并将其替换为新行(\n
) . 在您提出的问题中,您明确表示希望在范围15...20
中查找空格,并在空格后插入新行 . 下面我假设你真的想要:要用新行替换空格,因为在换行符之后的行上会有一个尾随空格 .
要搜索从索引
15
开始的第一个空格,但一直持续到找到一个(否则:如果在范围15...20
内找不到空格,则不应插入换行符?) .这两个与你的问题的偏差都可以很容易地恢复,所以请告诉我你是否愿意按照你的指示专门指出(而不是包括我自己的理由),我会更新这个答案 .
解决方案如下:
请注意,在找到15到20范围内的空格和第15到第20个字符(后者在
14...19
范围内)之间存在一个一个一个的区别 . 在上面,我们搜索从第16个字符开始的第一个空格(索引15
) .感谢dfri让我指向了正确的方向 . 虽然他的回答对我的问题是正确的,但我提供了以下代码来帮助