如何从“MyLibrary.Resources.Images.Properties.Condo.gif”字符串中获取“MyLibrary.Resources.Images.Properties”和“Condo.gif”。
我还需要能够处理类似“MyLibrary.Resources.Images.Properties.legend.House.gif”的内容并返回“House.gif”和“MyLibrary.Resources.Images.Properties.legend”。< / p>
IndexOf LastIndexOf无效,因为我需要倒数第二个'。'字符。
提前致谢!
更新
感谢到目前为止的答案,但我真的需要它能够处理不同的命名空间。所以我真正要问的是如何分割字符串中的倒数第二个字符?
答案 0 :(得分:1)
你可以使用Regex或String.Split和'。'作为分隔符并返回倒数第二个''。' +最后的作品。
答案 1 :(得分:1)
您可以查找IndexOf("MyLibrary.Resources.Images.Properties.")
,将其添加到MyLibrary.Resources.Images.Properties.".Length
,然后从该位置添加.Substring(..)
答案 2 :(得分:1)
如果您确切地知道自己在寻找什么,并且它正在追踪,那么您可以使用string.endswith。像
这样的东西if("MyLibrary.Resources.Images.Properties.Condo.gif".EndsWith("Condo.gif"))
如果不是这种情况,请查看regular expressions。然后你可以做类似
的事情if(Regex.IsMatch("Condo.gif"))
或者更通用的方法:将字符串拆分为'。'然后抓住数组中的最后两个项目。
答案 3 :(得分:1)
您可以使用LINQ执行以下操作:
string target = "MyLibrary.Resources.Images.Properties.legend.House.gif";
var elements = target.Split('.');
const int NumberOfFileNameElements = 2;
string fileName = string.Join(
".",
elements.Skip(elements.Length - NumberOfFileNameElements));
string path = string.Join(
".",
elements.Take(elements.Length - NumberOfFileNameElements));
这假定文件名部分只包含一个.
字符,因此为了获得它,您可以跳过剩余元素的数量。
答案 4 :(得分:1)
string input = "MyLibrary.Resources.Images.Properties.legend.House.gif";
//if string isn't already validated, make sure there are at least two
//periods here or you'll error out later on.
int index = input.LastIndexOf('.', input.LastIndexOf('.') - 1);
string first = input.Substring(0, index);
string second = input.Substring(index + 1);
答案 5 :(得分:1)
尝试将字符串拆分为数组,方法是将其分隔为每个'。'字符。
然后你会有类似的东西:
{"MyLibrary", "Resources", "Images", "Properties", "legend", "House", "gif"}
然后你可以采用最后两个元素。
答案 6 :(得分:1)
只需分解并在char循环中执行:
int NthLastIndexOf(string str, char ch, int n)
{
if (n <= 0) throw new ArgumentException();
for (int idx = str.Length - 1; idx >= 0; --idx)
if (str[idx] == ch && --n == 0)
return idx;
return -1;
}
这比尝试使用字符串拆分方法哄它更便宜,而且不是很多代码。
string s = "1.2.3.4.5";
int idx = NthLastIndexOf(s, '.', 3);
string a = s.Substring(0, idx); // "1.2"
string b = s.Substring(idx + 1); // "3.4.5"