![](/img/trans.png)
[英]How do i use a string file path in settings so i can get that path useable in my code
[英]How Can I Manipulate a File Path as a String?
我在JavaScript中使用了splice()函数。
我找不到ASP.NET的等效方法。 有没有?
如果没有,如何在ASP.NET中插入或删除数组的索引?
我正在尝试使用我编写过的JavaScript代码的逻辑。 如果有帮助,请尝试使用ASP.NET进行相同操作。
var imagePath = "/ImageFolder/Gallery/AnAlbum/image.jpg";
var folders = imagePath.split("/");
var imageFile = folders[folders.length - 1];
folders.splice(folders.length - 1, 1);
var newPath = folders.join("/");
var newImageUrl = newPath + "/thumb/thumb_" + imageFile;
return newImageUrl;
编辑:
什么是接头?
来自 。
array.splice(start,deleteCount [,item1 [,item2 [,...]]])
参量
开始
开始更改数组的索引。 如果大于数组的长度,则实际的起始索引将设置为数组的长度。 如果为负,则将从头开始那么多元素。
deleteCount
一个整数,指示要删除的旧数组元素的数量。 如果deleteCount为0,则不会删除任何元素。 在这种情况下,您应该至少指定一个新元素。 如果deleteCount大于开始时数组中剩余的元素数,则将删除数组末尾的所有元素。
项目N
要添加到数组中的元素。 如果不指定任何元素,则splice()只会从数组中删除元素。
退货
包含已删除元素的数组。 如果仅删除一个元素,则返回一个元素的数组。 如果没有删除任何元素,则返回一个空数组。
预期产量:
/ImageFolder/Gallery/AnAlbum/image.jpg
/ImageFolder/Gallery/AnAlbum/thumb/thumb_image.jpg
.NET中的数组具有固定的大小,因此无法直接转换数组上的splice()
,但是如果使用List<>
而不是数组,则存在Insert
, Remove
和RemoveRange()
方法满足相同的需求。
var imagePath = "/ImageFolder/Gallery/AnAlbum/image.jpg";
var folders = imagePath.Split('/').ToList(); // make it a list
var imageFile = folders[folders.Count - 1];
folders.RemoveAt(folders.Count - 1); // or folders.RemoveRange(folders.Count - 1, 1);
var newPath = string.Join("/", folders);
var newImageUrl = newPath + "/thumb/thumb_" + imageFile;
return newImageUrl;
.NET拥有一个更大的工具集来直接使用路径,而不是尝试操纵数组(如果您仍然愿意, StriplingWarrior会很好地向您展示如何 )。 您的问题可以简化为
var imagePath = "/ImageFolder/Gallery/AnAlbum/image.jpg";
var folder = Path.GetDirectoryName(imagePath);
var imageFile = Path.GetFileName(imagePath);
var newImageUrl = folder + "/thumb/thumb_" + imageFile;
return newImageUrl;
您可以改用List :
var imagePath = "/ImageFolder/Gallery/AnAlbum/image.jpg";
var folders = imagePath.Split('/');
var imageFile = folders[folders.Length - 1];
var foldersList = new List<String>(folders);
foldersList.RemoveAt(folders.Length - 1);
var newPath = String.Join("/", foldersList.ToArray());
var newImageUrl = newPath + "/thumb/thumb_" + imageFile;
return newImageUrl;
使用List
而不是数组。 然后,您可以利用List.Insert(index, item)
和List.RemoveAt(index)
RemoveAt
不会像splice
那样返回值。 但是,无论如何,它看起来都不是您正在使用它。
您可以使用正则表达式一次完成整个操作。
var imagePath = "/ImageFolder/Gallery/AnAlbum/image.jpg";
var newImageUrl = Regex.Replace(imagePath, "/(?!.*/)", "/thumb/thumb_");
Console.WriteLine (imagePath);
// ouput is /ImageFolder/Gallery/AnAlbum/image.jpg
Console.WriteLine (newImageUrl);
// output is /ImageFolder/Gallery/AnAlbum/thumb/thumb_image.jpg
模式正在寻找最后一个斜杠。 (一个斜杠,之后没有其他斜杠出现)
您可以为List编写扩展方法。
public static class SpliceExtension
{
public static List<T> Splice<T>(this List<T> list, int offset, int count)
{
return list.Skip(offset).Take(count).ToList();
}
}
您不能轻易在.NET中拼接数组,因为数组是固定大小的。 最接近的方法是创建一个新数组,然后将要保留的项目复制到其中。
您可以使用字符串操作方法来创建新的字符串,而不是拆分字符串:
string imagePath = "/ImageFolder/Gallery/AnAlbum/image.jpg";
return imagePath.Insert(imagePath.LastIndexOf('/') + 1, "thumb/thumb_");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.