- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
利用我的 cpp 技能,我开发了以下旧式递归方法,将文本拆分为字符串数组,最近的分词符由字符数参数(“limit”)限制或限制:
#see below for sample usage
def split_at_limit(text, limit, result)
slices = text.scan(/.{1,#{limit}}/m)
return if slices.blank?
first_slice = slices.first
if first_slice.last == " " || (slices.length > 1 && slices[1].first == " ")
result << first_slice
slices.delete_at 0
split_at_limit(slices.join, limit, result)
elsif slices.length > 1
first_slice_length = first_slice.length - 1
appendix = ""
i = 0
first_slice_length.times do |i|
break if first_slice[first_slice_length-i].chr == " "
appendix = "#{first_slice[first_slice_length-i].chr}#{appendix}"
first_slice[first_slice_length-i] = ''
end
first_slice = slices.first if i == first_slice.length
result << first_slice
slices.delete_at 0
slices[0] = "#{appendix}#{slices[0]}"
split_at_limit(slices.join, limit, result)
end
result
end
达到了目的,但是有没有更好的方法(swift算法)来实现上述目标?
编辑:
示例用法
def datadump
return <<-END_TEXT
Suspendisse ut neque magna, nec elementum odio. Integer quis massa tortor, commodo tincidunt augue. Donec congue lacinia odio in aliquet. Ut vehicula elementum mi id lobortis. Sed eget pretium orci. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vel velit hendrerit nisl facilisis gravida quis ac nunc. Morbi tincidunt ligula ut turpis faucibus placerat. Duis commodo turpis vehicula diam imperdiet eu sollicitudin erat luctus. Nulla facilisi. Aenean aliquam facilisis enim et ultrices. Nulla adipiscing semper massa quis egestas. Nam tempus suscipit semper. Suspendisse sed venenatis lacus.
Phasellus ac tortor a nisi porttitor rutrum eu nec odio. Cras pulvinar, eros non faucibus semper, odio odio mollis justo, vulputate rhoncus odio justo id purus. Donec tincidunt malesuada enim, luctus tempor augue interdum id. Maecenas luctus imperdiet justo, ut vulputate turpis varius et. Nunc placerat pellentesque interdum. Pellentesque porta dignissim neque a dignissim. Mauris vitae nisi at tortor hendrerit accumsan in at est. Phasellus erat mi, eleifend eu imperdiet sit amet, accumsan posuere risus. Donec at faucibus libero. Proin lectus risus, aliquet a dictum nec, iaculis a diam. Ut velit nibh, ultricies eget convallis a, dignissim vitae tortor. Fusce sed lorem mauris, non gravida nisi.
Aliquam malesuada cursus dui, in vestibulum lectus vulputate ut. Proin semper facilisis augue, ut imperdiet erat facilisis ac. Maecenas laoreet faucibus mi, ut mollis diam aliquet scelerisque. Praesent sit amet magna quam, nec auctor nisi. Cras tristique varius scelerisque. Donec vehicula lectus ac urna fermentum faucibus. Aenean nec augue vitae dui tristique luctus. Donec lacus leo, pellentesque ut aliquet vitae, eleifend bibendum neque. Vivamus id diam risus, et ornare magna. Praesent quam dui, congue ut cursus sed, egestas id tortor. Integer eget lacus purus. Sed fermentum convallis quam, sit amet dapibus mi tristique non. Donec vehicula ligula eget risus varius aliquam. Praesent ut odio eu sem mollis euismod. Donec egestas tincidunt dolor et imperdiet.
END_TEXT
end
puts split_at_limit(datadump, 40, []).inspect
#gives=>["Suspendisse ut neque magna, nec ", "elementum odio. Integer quis massa ", "tortor, commodo tincidunt augue. Donec ", "congue lacinia odio in aliquet. Ut ", "vehicula elementum mi id lobortis. Sed ", "eget pretium orci. Cum sociis natoque ", "penatibus et magnis dis parturient ", "montes, nascetur ridiculus mus. Nulla ", "vel velit hendrerit nisl facilisis ", "gravida quis ac nunc. Morbi tincidunt ", "ligula ut turpis faucibus placerat. Duis", " commodo turpis vehicula diam imperdiet ", "eu sollicitudin erat luctus. Nulla ", "facilisi. Aenean aliquam facilisis enim ", "et ultrices. Nulla adipiscing semper ", "massa quis egestas. Nam tempus suscipit ", "semper. Suspendisse sed venenatis ", "lacus.\n\n Phasellus ac tortor a nisi", " porttitor rutrum eu nec odio. Cras ", "pulvinar, eros non faucibus semper, odio", " odio mollis justo, vulputate rhoncus ", "odio justo id purus. Donec tincidunt ", "malesuada enim, luctus tempor augue ", "interdum id. Maecenas luctus imperdiet ", "justo, ut vulputate turpis varius et. ", "Nunc placerat pellentesque interdum. ", "Pellentesque porta dignissim neque a ", "dignissim. Mauris vitae nisi at tortor ", "hendrerit accumsan in at est. Phasellus ", "erat mi, eleifend eu imperdiet sit amet,", " accumsan posuere risus. Donec at ", "faucibus libero. Proin lectus risus, ", "aliquet a dictum nec, iaculis a diam. Ut", " velit nibh, ultricies eget convallis a,", " dignissim vitae tortor. Fusce sed lorem", " mauris, non gravida nisi.\n\n ", "Aliquam malesuada cursus dui, in ", "vestibulum lectus vulputate ut. Proin ", "semper facilisis augue, ut imperdiet ", "erat facilisis ac. Maecenas laoreet ", "faucibus mi, ut mollis diam aliquet ", "scelerisque. Praesent sit amet magna ", "quam, nec auctor nisi. Cras tristique ", "varius scelerisque. Donec vehicula ", "lectus ac urna fermentum faucibus. ", "Aenean nec augue vitae dui tristique ", "luctus. Donec lacus leo, pellentesque ut", " aliquet vitae, eleifend bibendum neque.", " Vivamus id diam risus, et ornare magna.", " Praesent quam dui, congue ut cursus ", "sed, egestas id tortor. Integer eget ", "lacus purus. Sed fermentum convallis ", "quam, sit amet dapibus mi tristique non.", " Donec vehicula ligula eget risus varius", " aliquam. Praesent ut odio eu sem mollis", " euismod. Donec egestas tincidunt dolor "]
最佳答案
假设:
You want is to split the text into maximum-40-character long strings each. And each string has been split at a word boundary that is as close as possible to the limit (i.e. 40) but should not exceed the limit.
这是一种解决方案:
def datadump
return <<-END_TEXT
Suspendisse ut neque magna, nec elementum odio. Integer quis massa tortor, commodo tincidunt augue. Donec congue lacinia odio$
END_TEXT
end
a = datadump.split(/(.{1,40}\b)/)
a = a.reject{|el| el.size == 0}
puts a # or p a to see results
关于ruby - 在字符限制处拆分文本并返回字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6539659/
这个问题已经有答案了: What is the difference between a variable, object, and reference? [duplicate] (5 个回答) 已关
我正在使用以下代码来学习java套接字编程。它的作用是,client.java 程序从用户那里获取一个号码并将其发送到 sever.java。然后服务器将其乘以2并发回给客户端。在我的客户端程序中,它
我编写了一个自己开发的串行端口类,为了简单起见,我使用了阻塞/同步/非重叠。我浏览了所有 MSDN 文档,这对我来说很困难。 我在从端口打开、传输或接收字节方面没有任何问题。所有操作都是同步并且没有线
//Not finished -- disregard function evaluate() { var cdate = new Date(); var cday = cdate.getDa
我已经尝试过了,但它有效 例如: x= 523.897 y= x[0:"."] print y 我只想打印 523。如何让 Python 抓取字符串直到某个字母或数字? 最佳答案 行 y = x[0:
我想移动拐 Angular 处的方框(从左上角开始水平移动 Angular 落到右上角然后你去到右下角。 function myMove() { var elem = document.getEl
如何让侧边栏停止在第二个侧边栏部分而不是顶部? fiddle http://jsfiddle.net/EvAdP/2/ HTML I'm the header
我刚刚在大学开始我的第二门编程类(class),我们的第一个作业相当简单,旨在基本上检查我们的环境并检查我们是否知道如何通过类(class)网站提交作业。 当我运行我们提供的代码时,它卡在应该提示用户
我目前正忙于我的这个信息学元素(构建一个示例交友网站)。问题是我在把所有东西都放在正确的地方时遇到了一些麻烦。一切都很顺利,直到我的邮箱出现在错误的位置(但是,Dreamweaver 会按照我的意
我想,和你一样hover a GIF shot on Dribbble , 当光标位于元素高度顶部之后/50% 处时显示带有信息的 div。 测试示例 我做了这个,这是有效的,但有点棘手......特
我有一个下拉菜单,并且我已将 mouseenter 设置为选项。因此,如果鼠标位于触发器之外,菜单应该关闭。我正在使用 jQuery 1.8.0。这可能是 CSS 问题吗? 这是我初始化插件的代码。
我正在尝试在 Visual Basic for Applications 中编写一个 hello world 应用程序,即修改 Excel 工作表中的单元格。这是: Sub hello() D
我的应用程序使用 JSF 2.1 和 PrimeFaces。最近,由于一些线程卡住,观察到 CPU 利用率非常高。所有卡住线程的卡住线程转储都指向 javax.faces.component.UICo
在列出 aws cognito 用户时,我的 Node js 应用程序遇到问题。 仅当我有超过 60 个 Cognito 用户时才会出现此问题。 Reference of API 下面是我的代码片段。
我是 ubuntu 用户..我在 php 中有一个执行 python 文件的命令..python 文件设置为可执行文件..所以,我的 php 命令是:- shell_exec("try.py");
我正在尝试将剪贴板内容写入文件,但由于某种原因程序卡住了。 FILE *fp; fp = fopen("tmp.code","w"); fprintf(fp,getclip()); /*writes*
当用户向下滚动时,我使用此代码使侧边栏固定在某个 div 处。问题是我必须手动输入一个阈值数字,这并不总是理想的,因为该部分的位置可能会更改或在各种浏览器和系统之间不一致。我想知道是否有一种方法可以在
我有一个字符串数组,例如 first_page = {{"U","M","Y","Q","I","A","L","D","P"、"F"、"E"、"G"、"T"、"Z"、"V"、"W"、"H"、"O"、
我能否在页面上的特定 px 位置放置一个元素(例如图像),然后让文本围绕它流动? 必要时使用 JS/jquery。 我确实看到了这个Have text flow around an object th
第一次在这里提问。 我有两个简单的 Javascript 函数,1. 生成一个随机字母,2. 在每个单元格中使用单个字母填充 10x10 表格。创建表的主要函数是通过带有 onclick 的简单 HT
我是一名优秀的程序员,十分优秀!