问题标签 [text]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - 确定由多个用户编辑的文本的“所有者”
您可能已经注意到,我们现在在社区 Wiki 帖子上显示编辑摘要:
社区 wiki
220 次修订,48 位用户
我还想向“最拥有”页面上显示的最终内容的用户显示剩余文本的百分比:
社区 wiki
220 次修订,48 位用户
kronoz 87%
是的,可能有前 (n) 个“所有者”,但现在我想要前 1 个。
假设你有这个数据结构,一个用户/文本对列表,按发布时间顺序排列:
这些用户中谁最“拥有”最终文本?
我正在寻找一种合理的算法——它可以是一个近似值,它不必是完美的——来确定所有者。理想情况下以百分比分数表示。
请注意,我们需要考虑编辑、删除和插入,因此最终结果感觉合理且正确。您可以使用任何具有良好修订历史的 stackoverflow 帖子(不仅仅是重新标记,而是频繁的帖子正文更改)作为测试语料库。这是一个很好的版本,有来自 14 位不同作者的 15 次修订。谁是“主人”?
https://stackoverflow.com/revisions/327973/list
单击“查看源代码”以获取每个修订的原始文本。
我应该警告您,纯算法解决方案可能最终成为最长公共子串问题的一种形式。但正如我所提到的,如果它们运行良好,近似值和估计值也很好。
欢迎使用任何语言的解决方案,但我更喜欢以下解决方案
- 相当容易翻译成c#。
- 免于依赖。
- 将简单置于效率之前。
在 SO 上发表超过 25 次修订的帖子非常罕见。但它应该“感觉”准确,所以如果你仔细观察编辑,你会同意最终决定。我鼓励您在带有修订历史的堆栈溢出帖子上测试您的算法,看看您是否同意最终输出。
我现在已经部署了以下近似值,您可以在 Community Wiki 帖子上的每个新保存的修订版本中看到它的实际效果
- 对正文更改的每个修订版进行基于行的差异
- 将每个修订的插入和删除行相加为“editcount”
- 每个用户 ID 都会得到他们贡献的“editcount”的总和
- 第一次修订作者获得 2x * "editcount" 作为初始分数,作为主要作者奖金
- 确定最终所有权百分比:每个用户的编辑行总数除以所有修订中的编辑行总数
(对于常见的简单条件,例如 1 个修订版、只有 1 个作者等,还有一些保护条款。基于行的差异使得重新计算所有修订版的速度相当快;在 10 个修订版的典型情况下,它约为 50 毫秒。)
这在我的测试中效果很好。当你有几个人编辑的小 1 或 2 行帖子时,它确实会有点崩溃,但我认为这是不可避免的。接受乔尔·尼利(Joel Neely)的回答在精神上与我的想法最接近,并赞成其他所有似乎可行的事情。
windows - 用于检测和删除文件中的文本的 Windows 命令
我有一个 ascii 文件,其中某处是行:BEGIN,稍后在行:END
我希望能够从 Windows 中的命令行调用中删除这两行以及介于两者之间的所有内容。这需要完全自动化。
编辑:请参阅Vista 中的 sed - 如何删除之间的所有符号?有关如何使用 sed 执行此操作的详细信息(cygwin 已 sed)。
编辑:我发现 SED 可以工作,但是当我将输出传输到文件时,回车符已被删除。我怎样才能保留这些?使用这个 sed 正则表达式:
/^GlobalSection(TeamFoundationVersionControl) = preSolution$/,/^EndGlobalSection$/{ /^GlobalSection(TeamFoundationVersionControl) = preSolution$/!{ /^EndGlobalSection$/!d } }
.. 开始部分是“GlobalSection(TeamFoundationVersionControl) = preSolution”,结束部分是“EndGlobalSection”。我也想删除这些行。
编辑:我现在为 sed 使用更简单的东西:
/^GlobalSection(TeamFoundationVersionControl) = preSolution$/,/^EndGlobalSection$/d
换行仍然是一个问题
plugins - 有没有类似 vi 模式的可扩展编辑器?
我正在寻找一个完美的文本编辑器:)
“必备”清单:
- 类似vim的模态编辑,类似于vim的键绑定
- emacs 喜欢可扩展性 - 插件和编辑器本身使用相同的“真实”语言,因此扩展几乎可以影响编辑器内外的任何东西...... vim 脚本还不够,python 插件也不够
- 插件不受外部进程限制,可以异步更改文本等。
- 支持termcap / curses,这样就可以在里面运行一个真实的终端了
- 使用真正的语法解析,因此插件可以获取有关单词“类型”的信息,而无需通过“它是什么颜色”路径 (synIDattr(synID(line("."), col("."), 1), “名称”)是禁止的)
- 可以进行远程编辑(但这可能已经由插件+扩展点保证)
我知道 viper emacs,但我不确定我是否喜欢这个想法......有人知道更好的东西吗?
说明:
我不是全职程序员。我是一名管理员/程序员/高级用户,他已经将所有时间都花在一次在许多主机上的控制台上,并且 95% 的时间都在运行 vim。我喜欢 vim,但我正在寻找 vim-im ;) Eclipse 并不适合我,因为大多数时候我都在用自己的语法文件编辑 configs / dsls。
有时我确实需要一种重构插件来处理我经常做的事情。我有证据证明它可以在 vim 中完成,但它真的很痛苦......例如,你不能请求“解析树中的先前标记”。您可以做的最好的事情是逐个字符地返回并检查该单词是否具有与变量/函数/其他内容相同的着色样式(在每次检查时都要求解析文件片段)。如果我不能用简单的脚本语言扩展编辑器,它也对我不起作用。
此外,我经常需要第二个终端来运行某些东西并将输出复制到 vim。我无法运行 :!r... 因为它会挂起 vim 中的每个选项卡,直到命令完成。
啊——只有 linux + 控制台——我对 Windows 世界不感兴趣 :)
java - 如何在 Java 中识别文本文档的语言?
是否有现有的 Java 库可以告诉我字符串是否包含英语文本(例如,我需要能够区分法语或意大利语文本——该函数需要为法语和意大利语返回 false,对英语返回 true) ?
html - 编写stackoverflow样式“问题”/“标签”翻转按钮的最佳方法
什么是实现翻转“按钮”的最佳方式,如 Stackoverflow 顶部的“问题”、“标签”、“用户”。
它实际上是这样实现的:
我有点放弃尝试为此找到 javascript,因为所有 javsascript 似乎都在一条线上。
我只是想知道人们认为实现这样的简单按钮的最简单/最可靠的方法是什么。
我发现 stackoverflow 正在使用<li>
而不是像<span>
. 很好奇为什么...
PS。我正在使用 ASP.NET——目前没有其他库,如 JQuery,但如果有帮助,我愿意尝试类似的东西。
text - 文档、文本格式
对于我的项目,我需要多种类型文档的文档编辑器(表格数据、发票、信件、一些公式,...),我正在寻找文本格式和编辑器来完成我的任务
- 有一些类似 MS Word 的格式吗?
- 我知道例如 rtf,我需要格式化,不可见的评论会很好
- 开放格式
- 同样的第 3 页。编辑会很好
我找到了一些解决方案,rtf是最常见的
请问您有相同的建议或个人经验吗?
c - 在屏幕上打印和文本文件
我需要将某些内容转储到文本文件中,并且需要在屏幕上显示相同的内容。(我说的是 C 程序实用程序)菜单选项如下所示,
如果他们选择1/2/3,它只需要显示在屏幕上,或者如果他们选择选项#4,它需要一个一个显示所有参数,同样需要转储到一个.txt文件中。
我知道,我们可以使用 printf 和 fprintf 函数分别在屏幕上显示和写入文本文件。问题是我显示了超过 20 个参数,每个参数至少有 20 个子参数。
我目前的实施如下,
有没有一种最简单的方法来实现这一点以减少代码行数?
c++ - 如何使用 fprintf/printf 打印出破折号或圆点?
截至目前,我正在使用下面的行打印不带点的
我期望输出将类似于以下内容,
如何使用 fprintf/printf 打印出破折号或圆点?
svn - 如何明确告诉 SVN 将文件视为文本,而不是二进制文件
我有许多文件在没有正确设置它们的 Mime 类型的情况下签入 SVN。SVN 最初将它们分类为二进制。
我已经通过 propset 在 SVN 中将他们的 Mime 类型设置为“text/plain; charset=UTF-8”,并且我确保所有文件都是 UTF-8 签名的。当我执行 'svn blame filename' 时,svn 说该文件是二进制文件并且没有给我明确的责备类型输出。
关于如何说服 SVN 这些是真正的文本文件的任何建议?
android - 如何在屏幕“上方”显示文本编辑框?
我有一个应用程序,其主要布局为纵向(固定为纵向),并且有一个地方可以输入文本。我想像一个横向的弹出窗口一样启动,背景图像模糊不清。我知道有一个弹出窗口小部件,但任何旋转文本编辑框的想法都会很棒。滑出键盘时将其旋转到纵向视图(仅限文本框)也可以,就像在键盘滑动上显示带有文本框的新屏幕一样。