2016-06-22 4 views
0

この文字列はD:\ASN\Documents\ENU\LO\ANL\File\05003ede-59bf-45c6-bb57-a6111e9f18e0\linux-cheat-sheet.pdfです。この文字列からこの文字列D:\ASN\Documents\ENU\LOを除外し、最初の文字列(この場合はANL)スプリット。定義済みの文字列を別の文字列から分割して分割後の最初の項目を取得する方法

私はこのような何か試してみました:

string fullpath = "D:\\ASN\\Documents\\ENU\\LO\\ANL\\File\\05003ede-59bf-45c6-bb57-a6111e9f18e0\\linux-cheat-sheet.pdf" 
string[] sep = new string[]{"D:\\ASN\\Documents\\ENU\\LO"}; 
string [] result = fullpath.split(stringSeparators, StringSplitOptions.RemoveEmptyEntries); 

    foreach (string s in result) 
      { 
       Console.Write(s.Substring(s.IndexOf(@"\") + 1)); 
      } 

しかし、これは私をANL\File\05003ede-59bf-45c6-bb57-a6111e9f18e0\linux-cheat-sheet.pdf"与えているが。代わりに、私はANLだけが必要です。これはどのように達成できますか?この方法の代わりにこれを得る他の方法はありますか?

TIA

+2

働いた - 私は 'System.IO.Path'クラスになります。 –

答えて

2
var result = fullpath.Replace(samplePath, "").Split('\\')[1]; 

あなたはそれを削除し、何も最初の部分(samplePath)を置き換えることができます(または、あなたがsamplePathの文字を数え、をフルパスの第二の部分を取得するサブストリングを使用することができます)、次に「上の結果を分割\ '、あなたが期待している結果である2番目のオカレンスを取得します。 https://dotnetfiddle.net/k4tfGP

+0

'.Split( '\')'がエラーを投げています。だから私は '.Split( '\\')'を使い、出力はnullです。私はここで何かが恋しいの? – ASN

+0

はい、あなたは '\\'で分割する必要があります(または、文字列で分割したい場合は、.Split(new string [] {@ "\"}、StringSplitOptions.None))を使用してから、あなたのひもで、最初のものは空です)。 –

+1

あなたに適したサンプルを提供しています。 –

2

あなたはそれが\を見て2番目の文字列に分割を行うことができますか?

String sampleString = "ANL\File\05003ede-59bf-45c6-bb57-a6111e9f18e0\linux-cheat-sheet.pdf""; 
String[] stringArray = sampleString.split("\"); 
String wantedString = stringArray[0]; 
+0

できます。しかし、私は同じものを得る他の方法があれば欲しい。私はこれに多くの分割を使用しているからです。 – ASN

1

これはsplit()が意図したものではありません。 split()は、通常、文字列を区切り文字に基づいて複数のセクションに分割するために使用されます。あなたの場合、あなたは '\'で分割してサブフォルダを区切るためにそれを使いたいかもしれません。

しかし、あなたは他のもの、つまりテキストのセクションを削除したいと思っています。

string result = fullpath.Substring("D:\\ASN\\Documents\\ENU\\LO".Length); 

これは、元の文字列を返します、マイナスXは正確にあなたが削除したい文字列の長さである第一Xの文字、:あなたはテキストは常に開始時になることを知っている場合は、これを試してみてください。

+0

スプリットに関する情報をありがとう。しかし、私があなたに提案したようにしたら、\ ANL \ LO \ File \ 05003ede-59bf-45c6-bb57-a6111e9f18e0 \ linux-cheat-sheet.pdf'が与えられています。しかし、どうすればこれから 'ANL'を得ることができますか? – ASN

+1

結果では、split()をセパレータとして '\\'を使用して使用し、結果の最初の要素を取得できるようになりました。 – Eli

+0

コードをありがとう。その作業:) – ASN

1
 string fullpath = 
      "D:\\ASN\\Documents\\ENU\\LO\\ANL\\File\\05003ede-59bf-45c6-bb57-a6111e9f18e0\\linux-cheat-sheet.pdf"; 
     string[] sep = new string[] {"D:\\ASN\\Documents\\ENU\\LO"}; 
     string[] result = fullpath.Split(sep, StringSplitOptions.RemoveEmptyEntries); 

     foreach (string s in result) 
     { 
      Console.Write(s.Substring(s.IndexOf(@"\") + 1, s.IndexOf(@"\", 2) - 1)); 
     } 

String.IndexOfはあなたの最初のインデックスを取得しますが、出発点を与えるのオーバーロードがあります。

は、ここで作業バージョンです。だからこの例では、あなたのパスには常に "\\"が含まれているので、出発点に "2"を与えました。

+0

コードをありがとう。その働き:)。しかし、私はこのプロセスを行うのではなく、これを解決する簡単な方法を探していました。 – ASN

0
 string basepath = "D:\\ASN\\Documents\\ENU\\LO\\"; 
     string fullpath = "D:\\ASN\\Documents\\ENU\\LO\\ANL\\File\\05003ede-59bf-45c6-bb57-a6111e9f18e0\\linux-cheat-sheet.pdf"; 

     fullpath = fullpath.Replace(basepath, ""); 
     string returnValue = fullpath.Remove(fullpath.IndexOf("\\"), fullpath.Length-fullpath.IndexOf("\\")); 

は、私はそれをしないだろう...ここ

関連する問題