2009-10-30 32 views
0

背景:我已经写过,但我不喜欢这种方法。原因是因为Javascript没有“sprintf”,如果语言支持它,那么我就会大量使用它。Javascript:快速脚本排列由管道分隔的文本(或任何字符分隔的文本)

问题:你将如何使用JavaScript从BEFORE到AFTER?如果任何人有一个很少的代码行的解决方案,或从一个JavaScript字符串库的东西,这将是信息。 TIA。

BEFORE:

red| lightblue| green 
cherry| ice| mint 
round| cubic| flowery 

AFTER:

red | lightblue | green 
cherry | ice  | mint 
round | cubic  | flowery 

免责声明:这不是功课或任何这样的事情,只是为了寻找新的思路。此外,这不是基于浏览器的JavaScript。这不是一个web开发问题,而是一个javascript编程问题。

+0

为什么要javascript来做到这一点? HTML旨在用于显示标记。 – rahul 2009-10-30 04:32:22

+0

嗯,例如,它可以在Windows脚本主机上下文中使用。 – 2009-10-30 04:36:44

回答

2

如果你喜欢sprintf,为什么不寻找一个JavaScript implementation它?

+0

嗯..好点 – dreftymac 2009-10-30 04:43:26

+0

小心,第一个击中的执行不支持填充值。 – 2009-10-30 04:49:42

1
function pad(str, len) { 
    for (var count = len - str.length; count > 0; count--) { 
     str = str + " "; 
    } 
    return str; 
} 

console.log(pad("red", 7) + "| " + pad("lightblue", 9) + "| " + pad("green", 7)); 
//etc. 

是的,逐个连接字符效率不高,但通常只有少量的迭代。

+0

是的,那正是我试图避免的。只是想知道是否有一种替代方法我没有想到...正则表达式技巧或什么... – dreftymac 2009-10-30 04:44:52

+0

嗯,我想还有其他有趣的方法来做到这一点。就像你知道最大长度一样,你可以做一些像'return str +'“.substr(str.length)'(总是将它填充到9)但除此之外......我什么也没有'。 :) – 2009-10-31 14:40:18

+0

唉,愚蠢的HTML。假设''“'上面有九个空格。 – 2009-10-31 14:40:50

相关问题