我在字符串中插入子字符串时遇到问题我想要注入"/thumbs"
到字符串路径中
/media/pictures/image1.jpg
我想将 /thumbs/ 注入到路径的最后一部分,如下所示:
/media/pictures/thumbs/image1.jpg
linq可以吗?
对于像路径操作这样的东西,最好使用System.IO
命名空间,特别是Path
对象。你可以做类似的事情;
string path = "/media/pictures/image1.jpg";
string newPath = Path.Combine(Path.GetDirectoryName(path), "thumbs", Path.GetFileName(path)).Replace(@"\", "/");
试试这个,你得到最后一个正斜杠的索引并在那个点插入额外的字符串。
不确定为什么要投反对票,但我保证它有效。
string original = "/media/pictures/image1.jpg";
string insert = "thumbs/";
string combined = original.Insert(original.LastIndexOf("/") + 1, insert);
linq可以吗?
您不需要在此过程中使用Linq。您可以使用String.Insert()方法;
返回一个新字符串,其中指定字符串插入到此实例中的指定索引位置。
string s = "/media/pictures/image1.jpg";
string result = s.Insert(s.LastIndexOf('/'), "/thumbs");
Console.WriteLine(result);
输出;
/media/pictures/thumbs/image1.jpg
这是一个演示。
我会使用Path类,最好是在您自己的实用程序方法中或作为扩展方法。
string pathWithThumbs = Path.Combine(Path.Combine(Path.GetDirectoryName(path), "thumbs"), Path.GetFileName(path));
Linq 在这里似乎格格不入;你不是真的在查询集合。另外,Path
该类会自动为您处理大部分斜线和角案例。
编辑:正如@juharr 指出的那样,从 4.0 开始,有一个方便的重载,使其更加简单:
string pathWithThumbs = Path.Combine(Path.GetDirectoryName(path), "thumbs", Path.GetFileName(path));
EDITx2:Hrrrm,正如@DiskJunky 指出的那样,这种路径用法实际上会将您的正斜杠换成反斜杠,所以只需Replace("\\", "/")
在那里打个电话。
我会使用 System.IO 类称为Path
.
这是仅用于演示目的的 long(er) 版本:
string pathToImage = "/media/pictures/image1.jpg";
string dirName = System.IO.Path.GetDirectoryName(pathToImage);
string fileName = System.IO.Path.GetFileName(pathToImage);
string thumbImage = System.IO.Path.Combine(dirName, "thumb", fileName);
Debug.WriteLine("dirName: " + dirName);
Debug.WriteLine("fileName: " + fileName);
Debug.WriteLine("thumbImage: " + thumbImage);
这是一个单行:
Debug.WriteLine("ShortHand: " + Path.Combine(Path.GetDirectoryName(pathToImage), "thumb", Path.GetFileName(pathToImage)));
我得到以下输出:
dirName: \media\pictures
fileName: image1.jpg
thumbImage: \media\pictures\thumb\image1.jpg
ShortHand: \media\pictures\thumb\image1.jpg