我有这样的字符串:
精灵\ /tilesTest.png
我想将 \ / 与 / 交换,并删除扩展程序,因此它看起来像这样
精灵/ tilesTest
这就是我所做的:
string GetImageToLoadPath(string path)
{
path = path.Replace("\\/", "/");
path = path.Substring(0, path.LastIndexOf("."));
return path;
}
有没有更好的方法呢?有没有办法使用正则表达式?
答案 0 :(得分:1)
我根本不明白为什么你需要一个正则表达式。字符串函数对解决这类问题非常有帮助,我会按照你已经做过的事情做同样的事情,但可能会让它成为一个班轮说
string GetImageToLoadPath(string path)
{
return path.Replace("\\/", "/").Substring(0, path.LastIndexOf("."));
}
答案 1 :(得分:1)
尝试以下代码,您可以从Regex.Replace Method (String, String)
获取更多详细信息string input = @"Sprites\/tilesTest.png";
string pattern = @"(\\)?(.png)?";
string replacement = "";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(input, replacement);
Console.WriteLine("Original String: {0}", input);
Console.WriteLine("Replacement String: {0}", result);
答案 2 :(得分:1)
我怀疑正则表达式是处理这样的文件路径的正确工具。
对于目录和文件名,Path.Combine
(与Path.GetDirectoryName
和Path.GetFileNameWithoutExtension
一起)可能很方便,尤其是当目录分隔符未知时。对于\/
替换,你做的方式似乎是最好的。
Path.Combine(Path.GetDirectoryName(s), Path.GetFileNameWithoutExtension(s))
.Replace(@"\/", "/");
请参阅C# demo:
using System;
using System.IO;
public class Test
{
public static void Main()
{
var s = @"Sprites\/tilesTest.png";
Console.Write(GetStr(s));
}
public static string GetStr(string s) {
return Path.Combine(Path.GetDirectoryName(s), Path.GetFileNameWithoutExtension(s)).Replace(@"\/", "/");
}
}
因此,Path.GetDirectoryName
获取文件夹路径,Path.GetFileNameWithoutExtension
获取文件名,但不包括扩展名,Path.Combine
使用系统默认目录分隔符符号将名称加入路径