Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 除了我所做的,还有更好的方法修改这个字符串吗?_C#_Regex_String_Path - Fatal编程技术网

C# 除了我所做的,还有更好的方法修改这个字符串吗?

C# 除了我所做的,还有更好的方法修改这个字符串吗?,c#,regex,string,path,C#,Regex,String,Path,我有这样的字符串: 精灵\/tilesTest.png 我想用/交换\/,并删除扩展,所以看起来像这样 雪碧/瓷砖 这就是我所做的: string GetImageToLoadPath(string path) { path = path.Replace("\\/", "/"); path = path.Substring(0, path.LastIndexOf(".")); return path; } 有没有更好的办法?使用正则表达式有什么方法可以做到这一点吗?我不

我有这样的字符串:

精灵\/tilesTest.png

我想用/交换\/,并删除扩展,所以看起来像这样

雪碧/瓷砖

这就是我所做的:

string GetImageToLoadPath(string path)
{
    path = path.Replace("\\/", "/");
    path = path.Substring(0, path.LastIndexOf("."));
    return path;
}

有没有更好的办法?使用正则表达式有什么方法可以做到这一点吗?

我不明白为什么需要正则表达式来实现这一点。字符串函数对解决这类问题非常有用,我也会像你已经做过的那样做,但可能只做一行

string GetImageToLoadPath(string path)
{
    return path.Replace("\\/", "/").Substring(0, path.LastIndexOf("."));
}

我不明白为什么你需要一个正则表达式。字符串函数对解决这类问题非常有用,我也会像你已经做过的那样做,但可能只做一行

string GetImageToLoadPath(string path)
{
    return path.Replace("\\/", "/").Substring(0, path.LastIndexOf("."));
}

请尝试以下代码,您可以从以下网站获得更多详细信息:


请尝试以下代码,您可以从以下网站获得更多详细信息:


我怀疑正则表达式是否是处理此类文件路径的合适工具

对于目录和文件名,
Path.Combine
(与
Path.GetDirectoryName
Path.GetFileNameWithoutExtension
)可能很方便,尤其是在不知道目录分隔符的情况下。至于更换
\/
的方法,您的做法似乎是最好的

Path.Combine(Path.GetDirectoryName(s), Path.GetFileNameWithoutExtension(s))
    .Replace(@"\/", "/");
见:


因此,
Path.GetDirectoryName
获取文件夹路径,
Path.GetFileNameWithoutExtension
获取扩展名之前但不包括扩展名的文件名,和
Path.Combine
使用系统默认的目录分隔符符号将路径与名称连接起来。

我怀疑正则表达式是否适合处理这样的文件路径

对于目录和文件名,
Path.Combine
(与
Path.GetDirectoryName
Path.GetFileNameWithoutExtension
)可能很方便,尤其是在不知道目录分隔符的情况下。至于更换
\/
的方法,您的做法似乎是最好的

Path.Combine(Path.GetDirectoryName(s), Path.GetFileNameWithoutExtension(s))
    .Replace(@"\/", "/");
见:


因此,
Path.GetDirectoryName
获取文件夹路径,
Path.GetFileNameWithoutExtension
获取文件名,但不包括扩展名,
Path.Combine
使用系统默认目录分隔符将路径与名称连接起来。

如果这种方法对您有效,那么您试图解决什么问题?是表演吗?不准确?或者你只是想通过看看如何使用正则表达式来扩展你的知识?如果是这样的话,到目前为止,你在正则表达式方面有什么?没有,这是做你需要的事情的最简单的方法。还请记住正则表达式不是神圣的grail@Peter4499只是扩展知识。我是一个完全不懂正则表达式的人,我只是研究了这个问题,虽然我对自己说“嗯,这可能是人们用正则表达式做的事情”,然后我继续做了一些正则表达式教程,但似乎正则表达式更适合于当你有一个字符串列表,并且你想过滤它们的时候。但我还是想问清楚。@FelipeMüller我会更清楚地回答我的问题。要明确的是,他们现在做这件事的方式比正则表达式快。根据我的经验,在更大的文本中搜索模式越复杂,正则表达式通常会成为更好的方法,但仍然不如字符串操作好,而是更干净、更快地编码。我会看看我是否可以发布一个正则表达式来回答你的挑战如果这种方法对你有效,那么你想解决什么问题?是表演吗?不准确?或者你只是想通过看看如何使用正则表达式来扩展你的知识?如果是这样的话,到目前为止,你在正则表达式方面有什么?没有,这是做你需要的事情的最简单的方法。还请记住正则表达式不是神圣的grail@Peter4499只是扩展知识。我是一个完全不懂正则表达式的人,我只是研究了这个问题,虽然我对自己说“嗯,这可能是人们用正则表达式做的事情”,然后我继续做了一些正则表达式教程,但似乎正则表达式更适合于当你有一个字符串列表,并且你想过滤它们的时候。但我还是想问清楚。@FelipeMüller我会更清楚地回答我的问题。要明确的是,他们现在做这件事的方式比正则表达式快。根据我的经验,在更大的文本中搜索模式越复杂,正则表达式通常会成为更好的方法,但仍然不如字符串操作好,而是更干净、更快地编码。我会看看我是否能发布一个正则表达式来回答你的挑战