如何解决对在任何输入文本框中找到的文本进行排序
我正在使用效果很好的“排序表”书签。
https://www.squarefree.com/bookmarklets/pagedata.html
我可以在任何有表格的页面上使用它。例如
但是是否可以对下一节中没有表格属性的文本进行排序?例如如何对部分中的单词进行排序?
===इंग्लिशशब्दासमराठीशब्दसूचना===
是否可以重写相同的书签来对任何输入文本框中的文本进行排序?
更新:
我使用的是装饰-排序-取消装饰的习惯用法
awk '/=/ {c++} {print c+1,$0}' file.txt |排序 -n | cut -d' ' -f2- | sed '/^$/d'
它将查找“等于”符号并编号该特定部分中的所有行,以便稍后对其进行排序。这按预期工作。但我需要将文本从 wiki 复制粘贴到 linux 提示符。我想书签会更快。上面提到的页面只是一个例子。我需要能够对在浏览器的任何文本区域中键入的文本进行排序。相关的 wiki 页面没有提到如何在 javascript 中执行此操作。
https://en.wikipedia.org/wiki/Schwartzian_transform
解决方法
确实,您通过复制粘贴文本走在正确的轨道上; bookmarklet 依赖于表“输入格式”,因此您必须让 bookmarklet 理解“散文形式输入格式的列表”(并为其提供一种输出回给您的方式),或者复制粘贴列表并使用其他工具。
一个对单词列表进行排序的书签是非常可行的,但一般来说不是很有用,所以我只会指出将文本复制粘贴到另一种编程语言中的更好解决方案:
您需要:
- 将数据导入您喜欢的编程语言
- 将数据解析为List类型
- 对列表进行排序
- 输出结果
您可以在开发者控制台的浏览器中使用 javascript 执行此操作,如下所示:
类型:
var myList = `very long list of words`.split(' '); //replace ' ' with ',' perhaps if there are commas
结果:["very","long","list","of","words"]
或者,这在没有逗号的语言中可能效果更好:
var myList = `very long list of words`.match(/\S+/g); // match contiguous sequence of non-spaces
然后排序:
myList.sort( (a,b) => a.localeCompare(b,'mr',{ignorePunctuation: true}));
然后您可以按原样检查输出,使用 console.log( myList.join(',') )
或 .join('\n')
打印,使用 console.table
(或做其他事情让您将表格复制粘贴到例如电子表格)等
您也可以考虑使用 Python 或其他编程语言。没有理由关心效率(根据您写的链接),除非您是开发人员,将其作为某种工具,在这种情况下,您需要澄清您的用例以更适合作为问题。即便如此,排序算法中的任何效率概念都是无稽之谈,因为它们都是 O(n log(n))。 Schwartzian 变换的整个想法是当您根据键对大对象列表进行排序时,该键的计算需要很长时间。字符串不是大数据类型。提出这个问题就像说你需要去买一壶牛奶,因此必须预先对地形进行积分计算,以优化汽车的燃油效率。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。