0

次の形式の文字列があります:

string path="/fm/Templates/testTemplate/css/article.jpg";

これを2番目の'/'で分割し、'/'を'\\'に置き換えて、このような結果が必要です。

string newPath="\\Templates\\testTemplate\\css\\article.jpg";

pathは動的に作成されるため、フォルダ階層は固定されていません。これを行うための最良の方法は何ですか。最初にで分割string path/、ループに移動してこれを再連結し、「/」を「\\」に置き換えるか、または簡単な方法がありません。

4

8 に答える 8

2

String.Replaceだけを使用することはできませんか?

于 2012-09-17T05:06:19.040 に答える
1
string path = "/fm/Templates/testTemplate/css/article.jpg";
path = path.Substring(path.IndexOf('/', 1)).Replace("/", "\\\\");
于 2012-09-17T05:12:38.817 に答える
0

これを試して、

string path = "/fm/Templates/testTemplate/css/article.jpg";
string[] oPath = path.Split('/');
string newPath = @"\\" + string.Join(@"\\", oPath, 2, oPath.Length - 2);
Console.WriteLine(newPath);
于 2012-09-17T05:12:19.907 に答える
0

次のコードを使用できます。

string path="/fm/Templates/testTemplate/css/article.jpg"; 
string newpath = path.Replace("/fm", string.Empty).Replace("/","\\"); 

ありがとう

于 2012-09-17T05:11:41.740 に答える
0

あなたの文字列操作は、すべてを一度に行う必要があるほどタイム クリティカルなものですか? 部分に分解するだけではるかに簡単です。

// First remove the leading /../ section:
path = Regex.Replace("^/[^/]*/", "", path);

// Then replace any remaining /s with \s:
path = path.Replace("/", "\\");
于 2012-09-17T05:18:36.613 に答える
0

これを試してください:

public static int nthOccurrence(String str, char c, int n)
{
    int pos = str.IndexOf(c, 0);
    while (n-- > 0 && pos != -1)
        pos = str.IndexOf(c, pos + 1);
    return pos;
}    

string path = "/fm/Templates/testTemplate/css/article.jpg";

int index = nthOccurrence(path, '/', 1);
string newpath = path.Substring(index).Replace("/", "\\");

出力: "\\Templates\\testTemplate\\css\\article.jpg"

于 2012-09-17T05:07:12.807 に答える
0

パスから最初の項目を削除した後、新しい文字列を作成できます。以下は、あなたに望ましい結果を与えるでしょう。最適化されている可能性があります。

あなたが試すことができます:

  • 文字列を char で分割し、/空のエントリを削除します。
  • 分割配列の最初の項目を無視して新しい配列を取得する
  • セパレータとしてstring.Join新しい文字列を作成するために使用します。\\

コードは次のとおりです。

string path = "/fm/Templates/testTemplate/css/article.jpg";
string[] temp = path.Split("/".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
var newTemp = temp.AsEnumerable().Where((r, index) => index > 0);
string newPath2 = string.Join("\\", newTemp);
于 2012-09-17T05:11:03.657 に答える
0

パスの個々のセグメントを操作している場合 (スラッシュの方向を置き換えるだけでなく)、System.Uri クラスが役立ちます (.Segments プロパティ)。

例: MSDNから

Uri uriAddress1 = new Uri("http://www.contoso.com/title/index.htm");
Console.WriteLine("The parts are {0}, {1}, {2}", uriAddress1.Segments[0], uriAddress1.Segments[1], uriAddress1.Segments[2]);
于 2012-09-17T05:11:13.320 に答える