我遇到麻烦在字符串中插入子字符串
我想要的是将"/thumbs"
注入到字符串路径
/media/pictures/image1.jpg
我想将/ thumbs /注入到路径的最后部分,如下所示:
/media/pictures/thumbs/image1.jpg
linq可以吗?
答案 0 :(得分:4)
对于类似路径操作的东西,最好使用System.IO
命名空间,特别是Path
对象。你可以这样做;
string path = "/media/pictures/image1.jpg";
string newPath = Path.Combine(Path.GetDirectoryName(path), "thumbs", Path.GetFileName(path)).Replace(@"\", "/");
答案 1 :(得分:3)
尝试此操作,您将获得最后一个正斜杠的索引,并在该点插入附加字符串。
不确定为什么要投票,但我保证它有效。
string original = "/media/pictures/image1.jpg";
string insert = "thumbs/";
string combined = original.Insert(original.LastIndexOf("/") + 1, insert);
答案 2 :(得分:2)
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
这是 DEMO 。
答案 3 :(得分:1)
我会使用Path类,最好是你自己的实用程序方法或扩展方法。
string pathWithThumbs = Path.Combine(Path.Combine(Path.GetDirectoryName(path), "thumbs"), Path.GetFileName(path));
Linq似乎在这里不合适;你不是真的在查询收藏品。另外,Path
类会自动为您处理大部分斜线和角落情况。
string pathWithThumbs = Path.Combine(Path.GetDirectoryName(path), "thumbs", Path.GetFileName(path));
EDITx2:Hrrrm,正如@DiskJunky指出的那样,这个Path用法实际上会将你的正斜杠换成反斜杠,所以只需在那里抛出Replace("\\", "/")
个调用。
答案 4 :(得分:1)
我会使用名为Path
的System.IO类。
这是长(呃)版本,仅用于演示目的:
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