如何 return 字符串数组中包含 C# 中特定子字符串的字符串?
How to return the String from String Array that contains a particular Substring in C#?
我正在获取命令行参数的字符串数组,并检查是否有任何参数包含“.xml”子字符串
string[] args = this.Command.GetCommandLineArgs();
string strXMLFileName = string.Empty;
for (int i = 0; i < args.Length; ++i)
{
if (args[i].Contains(".xml"))
{
strXMLFileName = args[i];
}
}
我在 List 方法中搜索了一下,但找不到任何可以简化过程的方法
我假设只有 1 个参数带有“.xml”子字符串
是否有任何内置的 C# 方法可以让我在不手动遍历字符串数组的情况下执行此操作
您可以使用 LINQ:
var strXMLFileName = args.FirstOrDefault(x => x.Contains(".xml"));
将产生 null
如果没有这样的参数。
注意:对于搜索字符串 ".xml"
,EndsWith
通常比 Contains
更合适。
您可以尝试 SingleOrDefault()
, so that you will get an exception if there are multiple .xml
files are available in the list. I used EndsWith()
而不是 Contains()
,这样条件将检查文件是否以 .xml
结尾。
var strXMLFileName = args.SingleOrDefault(x => x.EndsWith(".xml")) ?? string.Empty;
如果您确定带有 .xml
的字符串在数组中:
var arr = new string[]
{
"file1.txt",
"file2.xml",
"file3.xml",
};
var strXMLFileName = arr.First(x => x.EndsWith(".xml"));
System.Console.WriteLine(strXMLFileName);
如果您不确定:
var arr = new string[]
{
"file1.txt",
"file2.xml",
"file3.xml",
};
var strXMLFileName = arr.FirstOrDefault(x => x.EndsWith(".xml"));
System.Console.WriteLine(strXMLFileName);
我正在获取命令行参数的字符串数组,并检查是否有任何参数包含“.xml”子字符串
string[] args = this.Command.GetCommandLineArgs();
string strXMLFileName = string.Empty;
for (int i = 0; i < args.Length; ++i)
{
if (args[i].Contains(".xml"))
{
strXMLFileName = args[i];
}
}
我在 List
我假设只有 1 个参数带有“.xml”子字符串
是否有任何内置的 C# 方法可以让我在不手动遍历字符串数组的情况下执行此操作
您可以使用 LINQ:
var strXMLFileName = args.FirstOrDefault(x => x.Contains(".xml"));
将产生 null
如果没有这样的参数。
注意:对于搜索字符串 ".xml"
,EndsWith
通常比 Contains
更合适。
您可以尝试 SingleOrDefault()
, so that you will get an exception if there are multiple .xml
files are available in the list. I used EndsWith()
而不是 Contains()
,这样条件将检查文件是否以 .xml
结尾。
var strXMLFileName = args.SingleOrDefault(x => x.EndsWith(".xml")) ?? string.Empty;
如果您确定带有 .xml
的字符串在数组中:
var arr = new string[]
{
"file1.txt",
"file2.xml",
"file3.xml",
};
var strXMLFileName = arr.First(x => x.EndsWith(".xml"));
System.Console.WriteLine(strXMLFileName);
如果您不确定:
var arr = new string[]
{
"file1.txt",
"file2.xml",
"file3.xml",
};
var strXMLFileName = arr.FirstOrDefault(x => x.EndsWith(".xml"));
System.Console.WriteLine(strXMLFileName);