C# 在完整路径c中搜索字符串#
我有很多MP3文件的路径。我正在搜索此数组,以在整个路径中查找与正在搜索的内容匹配的任何内容。它只返回文件名中的匹配项,而不是路径 旧的:C# 在完整路径c中搜索字符串#,c#,string,search,C#,String,Search,我有很多MP3文件的路径。我正在搜索此数组,以在整个路径中查找与正在搜索的内容匹配的任何内容。它只返回文件名中的匹配项,而不是路径 旧的: 使用系统; 使用System.IO; 使用System.Collections.Generic; 使用System.Linq; 使用系统文本; 名称空间测试 { 班级计划 { 静态void Main(字符串[]参数) { _搜索(“蚂蚁”); Console.Read(); } 静态void\u搜索(字符串变量) { 字符串[]mp3=新字符串[1]; mp
使用系统;
使用System.IO;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
名称空间测试
{
班级计划
{
静态void Main(字符串[]参数)
{
_搜索(“蚂蚁”);
Console.Read();
}
静态void\u搜索(字符串变量)
{
字符串[]mp3=新字符串[1];
mp3=Directory.GetFiles(“c:\”、“*.mp3”、“SearchOption.AllDirectories”);
字符串[]临时=新字符串[1];
int x=0;
for(int i=0;i
新的:
使用系统;
使用System.IO;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
名称空间测试
{
班级计划
{
静态void Main(字符串[]参数)
{
列表搜索=搜索歌曲(“蚂蚁”);
foreach(搜索中的字符串歌曲)
{
控制台。WriteLine(歌曲);
}
}
静态列表搜索歌曲(字符串值)
{
value=value.ToLower();
列表歌曲=新列表();
字符串[]mp3=null;
mp3=Directory.GetFiles(@“c:\users\owner\music\metal\sybride”、“*.mp3”、SearchOption.AllDirectories).ToArray();
foreach(mp3中的字符串项)
{
string LowerCaseItem=item.ToLower();
if(小写项包含(值))
{
歌曲。添加(项目);
}
}
返回歌曲;
}
}
}请尝试以下代码:
class Program
{
static void Main(string[] args)
{
PrintItems(Search("John Lennon"));
PrintFileName(Search("John Lennon"));
Console.Read();
}
static string[] Search(string var)
{
return Directory.GetFiles(@"K:\mp3", "*" + var + "*.mp3", SearchOption.AllDirectories);
}
static void PrintItems(string[] array)
{
for (int i = 0; i < array.Length; i++)
Console.Write(array[i] + "\n");
}
static void PrintFileName(string[] array)
{
foreach (var item in array)
{
FileInfo fi = new FileInfo(item);
Console.WriteLine(fi.Name);
}
}
}
类程序
{
静态void Main(字符串[]参数)
{
印刷品(搜索(“约翰·列侬”);
打印文件名(搜索(“约翰·列侬”);
Console.Read();
}
静态字符串[]搜索(字符串变量)
{
返回Directory.GetFiles(@“K:\mp3”,“*”+var+“*.mp3”,SearchOption.AllDirectories);
}
静态无效打印项(字符串[]数组)
{
for(int i=0;i
路径必须作为搜索位置的参数指定
class program
{
static void Main(string[] args)
{
List<string> search = searchSong("SomeThing");
foreach (string song in search)
{
Console.Writeline(song);
}
}
public List<string> searchSong(string value)
{
List<string> songs = new List<string>();
String[] mp3 = null;
mp3 = Directory.GetFiles(@"D:\Songs", "*.mp3", SearchOption.AllDirectories).ToArray();
foreach (String item in mp3)
{
if (item.Contains(value))
{
songs.Add(item);
}
}
return songs;
}
}
类程序
{
静态void Main(字符串[]参数)
{
列表搜索=搜索歌曲(“某物”);
foreach(搜索中的字符串歌曲)
{
控制台。Writeline(歌曲);
}
}
公共列表搜索歌曲(字符串值)
{
列表歌曲=新列表();
字符串[]mp3=null;
mp3=Directory.GetFiles(@“D:\Songs”,“*.mp3”,SearchOption.AllDirectories).ToArray();
foreach(mp3中的字符串项)
{
如果(项目包含(值))
{
歌曲。添加(项目);
}
}
返回歌曲;
}
}
首先,您应该使用列表,而不是不断调整数组的大小。我看不出您只是在搜索文件名,因为您使用的是返回文件名(包括其路径)的GetFiles
+string.Contains
。我想我找到了答案,出于某种原因,我没有意识到它是区分大小写的:-/你应该发布答案,这样所有人都可以看到:)还没有得到答案,只是意识到我很愚蠢。我实际上得到了正确的路径,但它区分大小写。我没有找到解决方法。使用你的代码和我能解决这个问题!我很感激。
class Program
{
static void Main(string[] args)
{
PrintItems(Search("John Lennon"));
PrintFileName(Search("John Lennon"));
Console.Read();
}
static string[] Search(string var)
{
return Directory.GetFiles(@"K:\mp3", "*" + var + "*.mp3", SearchOption.AllDirectories);
}
static void PrintItems(string[] array)
{
for (int i = 0; i < array.Length; i++)
Console.Write(array[i] + "\n");
}
static void PrintFileName(string[] array)
{
foreach (var item in array)
{
FileInfo fi = new FileInfo(item);
Console.WriteLine(fi.Name);
}
}
}
class program
{
static void Main(string[] args)
{
List<string> search = searchSong("SomeThing");
foreach (string song in search)
{
Console.Writeline(song);
}
}
public List<string> searchSong(string value)
{
List<string> songs = new List<string>();
String[] mp3 = null;
mp3 = Directory.GetFiles(@"D:\Songs", "*.mp3", SearchOption.AllDirectories).ToArray();
foreach (String item in mp3)
{
if (item.Contains(value))
{
songs.Add(item);
}
}
return songs;
}
}