我正在尝试加入字符串列表。我有一个字符串列表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"}
我尝试过一种方法
str1="a b"
方法-.take()
答案 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