Algorithm 用于显示的智能路径截断/省略号
我正在寻找一种现有的路径截断算法(类似于Win32静态控件对Algorithm 用于显示的智能路径截断/省略号,algorithm,string,path,Algorithm,String,Path,我正在寻找一种现有的路径截断算法(类似于Win32静态控件对SS_PATHELLIPSIS所做的),用于一组应该关注不同元素的路径 例如,如果我的路径如下所示: Unit with X/Test 3V/ Unit with X/Test 4V/ Unit with X/Test 5V/ Unit without X/Test 3V/ Unit without X/Test 6V/ Unit without X/2nd Test 6V/ ...with X/...3V/ ...w
SS_PATHELLIPSIS
所做的),用于一组应该关注不同元素的路径
例如,如果我的路径如下所示:
Unit with X/Test 3V/
Unit with X/Test 4V/
Unit with X/Test 5V/
Unit without X/Test 3V/
Unit without X/Test 6V/
Unit without X/2nd Test 6V/
...with X/...3V/
...with X/...4V/
...with X/...5V/
...without X/...3V/
...without X/...6V/
...without X/2nd ...6V/
当没有足够的显示空间可用时,应将其截断为以下内容:
Unit with X/Test 3V/
Unit with X/Test 4V/
Unit with X/Test 5V/
Unit without X/Test 3V/
Unit without X/Test 6V/
Unit without X/2nd Test 6V/
...with X/...3V/
...with X/...4V/
...with X/...5V/
...without X/...3V/
...without X/...6V/
...without X/2nd ...6V/
(假设省略号通常短于三个字母)
这只是一个非常简单的理想情况的示例(例如,它们现在都以不同的长度结束,我不知道如何在向池中添加路径“Thingie/Long Test/”时创建一个好的建议)
路径元素没有给定的结构,它们是由用户指定的,但项目通常具有相似的段。它应该适用于比例字体,因此算法应该采用一个度量函数(而不是调用它)或生成一个建议列表
就数据而言,一个典型的用例将包含2..4个路径段和每个段20个元素
我正在寻找以前在这个方向上的尝试,如果可以通过合理的代码量或依赖性来解决这个问题。我假设您主要询问如何处理从同一层次结构中提取的文件夹名称集,因为按行和路径分隔符拆分和按层次深度聚合很简单 你们的问题让我想起了很多,但不同之处在于:
test9v
->test000009v
和test12b
test000012b
。这些现在可以通过标准方法进行排序
对于实际大小。除非这实际上是一个庞大的系统,否则我只需添加手动省略号“列表”(regex的列表,为了灵活性和痛苦),将某些单词变成省略号。这确实需要持续的工作,但提出算法也会消耗你的时间;角落里有无数的箱子
我可能会尝试一种“洪水填充”的方法。像排列位图一样排列第一级目录,每个字母都是一个像素。迭代目录名称中的所有字符。使用所有字符,“绘制”同一个字符,然后“绘制”第一个字符串中的下一个字符,使其紧跟在前一个字符之后(依此类推),然后选择您找到的最长的绘制字符串
示例(如果前缀为*,则会绘制)
请注意:
*ofoo
b*oo
*o*foo
b*oo
.. painting of first 'o' stops since there are no continuing characters.
of*oo
b*oo
...
然后到第二个“o”,它会找到一个至少为2的子字符串。
因此,您必须迭代大多数可能的字符实例(一个优化是在每个字符串的位置Length-n处停止,其中n是已经找到的最长的公共子字符串。但是还有另一个问题(这里是“Beta”
)
|一个聪明而有趣的问题。