我正在尝试在power-shell中分割一个字符串...我已经对字符串做了一些工作,但我无法弄清楚这最后一部分。
说我坐在这个字符串上:
This is a string. Its a comment that's anywhere from 5 to 250 characters wide.
我想将它拆分为30个字符,但我不想分开一个单词。如果我要将它分开,它会在一行上有“...... commen”......下一行就是“那个......”。
什么是优雅的方式来分割字符串,50max,而不会破坏一个字?简单地说,一个单词就是一个空格(注释中也可能有数字文本“$ 1.00”。也不想把它分成两半)。
答案 0 :(得分:7)
$regex = [regex] "\b"
$str = "This is a string. Its a comment that's anywhere from 5 to 250 characters wide."
$split = $regex.split($str, 2, 30)
答案 1 :(得分:0)
不确定它有多优雅,但一种方法是在长度为30个字符的子字符串上使用lastindexof来查找最大的30个字符以下的字符值。
$str = "This is a string. Its a comment that's anywhere from 5 to 250 characters wide."
$thirtychars = $str.substring(0,30)
$sen1 = $str.substring(0,$thirtychars.lastindexof(" ")+1)
$sen2 = $str.substring($thirtychars.lastindexof(" "))
答案 2 :(得分:0)
假设“单词”是以空格分隔的标记。
$str = "This is a string. Its a comment that's anywhere from 5 to 250 characters wide."
$q = New-Object System.Collections.Generic.Queue[String] (,[string[]]$str.Split(" "));
$newstr = ""; while($newstr.length -lt 30){$newstr += $q.deQueue()+" "}
对字符串进行标记(在空格上拆分),从而创建一个数组。在构造函数中使用数组创建Queue对象,自动填充队列;然后,你只需“弹出”队列中的项目,直到新字符串的长度尽可能接近极限。
请注意古怪的语法,[string[]]$str.Split(" ")
,以使构造函数正常工作。
熔点