在字符串中插入字符串

时间:2013-02-18 20:35:04

标签: c# string

我遇到麻烦在字符串中插入子字符串 我想要的是将"/thumbs"注入到字符串路径

/media/pictures/image1.jpg

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

/media/pictures/thumbs/image1.jpg

linq可以吗?

5 个答案:

答案 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类会自动为您处理大部分斜线和角落情况。

编辑:正如@juharr指出的那样,从4.0开始,有一个方便的过载使它更简单:

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