如何加入跳过最后2个元素的字符串列表

时间:2020-11-06 05:55:27

标签: vb.net

我正在尝试加入字符串列表。我有一个字符串列表function importpieCharts() { var dataSpreadsheetUrl = "https://docs.google.com/spreadsheets/d/1tPc0KU2uYuN4rO32tW-s6lql_IW57kbDUdSR8ZSkVXY/edit#gid=0"; //make sure this includes the '/edit at the end var ss = SpreadsheetApp.openByUrl(dataSpreadsheetUrl); var deck = SlidesApp.getActivePresentation(); var deckTitle = SlidesApp.getActivePresentation().getName(); var sheet = ss.getSheetByName(deckTitle); var charts = sheet.getCharts(); var slides = deck.getSlides(); var pieChartTemplate = slides[1]; charts.forEach(function(chart){ if(chart.modify().getChartType() == "PIE"){ pieChartTemplate.duplicate(); var updateSlide = deck.getSlides()[1]; var pageElements = updateSlide.getPageElements(); pageElements.forEach(function(pageElement){ if(pageElement.getPageElementType() == "SHAPE"){ if(pageElement.asShape().getShapeType() == "RECTANGLE"){ pageElement.asShape().replaceWithSheetsChart(chart); }}}); var presLength = deck.getSlides().length; updateSlide.move(presLength-2); }}); } 。我正在寻找一种从列表中删除最后2个元素的方法,以使我的预期输出看起来像lstItem={"a","b","c","2"}

我尝试过一种方法

  1. 我使用了str1="a b"方法-.take()

3 个答案:

答案 0 :(得分:2)

Dim str = String.Join(" ", lstItem.Take(lstItem.Count - 2))

答案 1 :(得分:0)

如果您想使用Linq,可以执行以下操作:

str1 = String.Join(" ", lstItem.Reverse().Skip(2).Reverse());

此操作是将lstItem中的元素反转,跳过前2个(实际上是最后2个),再次反转以使其返回原始顺序,最后使用单个空格字符将字符串连接在一起

答案 2 :(得分:0)

具有专用数据结构的可替代方法,该方法可用于枚举,因为仅迭代一次可枚举/收集。

Dim list = { "one","two","three","four" }

Dim result = list.Aggregate(
    (Separator:= " ", Builder:= new StringBuilder(), Items:= new List(Of Integer)()), 
    Function(composer, item)
        composer.Builder.Append(item).Append(composer.Separator)
        composer.Items.Add(item.Length + composer.Separator.Length)
        Return composer
    End Function,
    Function(composer)
        Dim lengthToCut = composer.Separator.Length + composer.Items.Take(2).Sum()
        composer.Builder.Length -= Math.Min(lengthToCut, composer.Builder.Length)
        Return  composer.Builder.ToString()
    End Function
)

result.Should().Be("one two") ' Pass Ok
相关问题