gpt4 book ai didi

c# - 从现有字符串构建新的类路径字符串

转载 作者:太空狗 更新时间:2023-10-29 20:46:30 25 4
gpt4 key购买 nike

我想修改一个看起来像的源字符串

"one.two.three" 

并将其转换为带有斜杠的字符串,以将其用作具有以下结构的文件夹字符串:

"one\one.two\one.two.three"

你知道比我下面的解决方案更优雅的方式来实现这一点吗?我对我的 for 循环不是很满意。

var folder = "one.two.three";
var folderParts = folder.Split('.');
var newFolder = new StringBuilder();
for (int i = 0; i < folderParts.Length; i++)
{
for (int j = 0; j < i; j++)
{
if (j == 0)
{
newFolder.Append("\\");
}

newFolder.Append($"{folderParts[j]}.");
}

newFolder.Append(folderParts[i]);
}

最佳答案

您可以使用 Regex 非常简洁地完成此操作

var newFolder = Regex.Replace(folder, @"\.", @"\$`.");

这匹配每个周期。每次找到一个句点时,它都会在匹配 ( $` ) 之前插入一个反斜杠,然后插入整个输入字符串。我们必须在末尾再次添加句点。

因此,步骤是(< 和 > 表示在该步骤通过替换插入的文本):

  1. 第 1 节比赛。 one<\one>.two.three
  2. 第 2 节比赛。 one\one.two<\one.two>.three
  3. 结果:one\one.two\one.two.three

要获得奖励积分,请使用 Path.DirectorySeparatorChar跨平台的正确性。

var newFolder = Regex.Replace(folder, @"\.", $"{Path.DirectorySeparatorChar}$`.")

这是另一种 linqy 方式:

var a = "";
var newFolder = Path.Combine(folder.Split('.')
.Select(x => a += (a == "" ? "" : ".") + x).ToArray());

关于c# - 从现有字符串构建新的类路径字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55295571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com