3

我在字符串中插入子字符串时遇到问题我想要注入"/thumbs"到字符串路径中

/media/pictures/image1.jpg

我想将 /thumbs/ 注入到路径的最后一部分,如下所示:

/media/pictures/thumbs/image1.jpg

linq可以吗?

4

5 回答 5

4

对于像路径操作这样的东西,最好使用System.IO命名空间,特别是Path对象。你可以做类似的事情;

string path = "/media/pictures/image1.jpg";
string newPath = Path.Combine(Path.GetDirectoryName(path), "thumbs", Path.GetFileName(path)).Replace(@"\", "/");
于 2013-02-18T20:43:55.120 回答
3

试试这个,你得到最后一个正斜杠的索引并在那个点插入额外的字符串。

不确定为什么要投反对票,但我保证它有效。

string original = "/media/pictures/image1.jpg";
string insert = "thumbs/";
string combined = original.Insert(original.LastIndexOf("/") + 1, insert);
于 2013-02-18T20:39:37.700 回答
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

这是一个演示

于 2013-02-18T20:42:49.020 回答
1

我会使用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("\\", "/")在那里打个电话。

于 2013-02-18T20:40:10.230 回答
1

我会使用 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
于 2013-02-18T20:46:50.363 回答