【发布时间】:2012-11-10 18:51:03
【问题描述】:
我有大量 MP3 文件的路径。我正在搜索此数组以在整个路径中查找任何内容以匹配正在搜索的内容。它只返回文件名中的匹配项,而不是路径。
旧:
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace test
{
class Program
{
static void Main(string[] args)
{
_search("ant");
Console.Read();
}
static void _search(string var)
{
string[] mp3 = new String[1];
mp3 = Directory.GetFiles("c:\","*.mp3","SearchOption.AllDirectories);
string[] temp = new string[1];
int x = 0;
for (int i = 0; i < mp3.Length; i++)
{
if (mp3[i].Contains(var))
{
temp[x] = mp3[i];
x++;
Array.Resize(ref temp, x + 1);
}
}
_writeArray(temp);
}
static void _writeArray(string[] array)
{
for (int i = 0; i < array.Length; i++)
Console.Write(array[i] + "\n");
}
}
}
新:
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace test
{
class Program
{
static void Main(string[] args)
{
List<string> search = searchSong("ant");
foreach (string song in search)
{
Console.WriteLine(song);
}
}
static List<string> searchSong(string value)
{
value = value.ToLower();
List<string> songs = new List<string>();
String[] mp3 = null;
mp3 = Directory.GetFiles(@"c:\users\owner\music\metal\sybreed", "*.mp3", SearchOption.AllDirectories).ToArray();
foreach (string item in mp3)
{
string LowerCaseItem = item.ToLower();
if (LowerCaseItem.Contains(value))
{
songs.Add(item);
}
}
return songs;
}
}
}
【问题讨论】:
-
一方面,您应该使用
List<string>,而不是不断调整数组的大小。 -
我没有看到您只是在搜索文件名,因为您使用的是
GetFiles,它返回文件的名称(包括它们的路径) +string.Contains. -
我想我明白了,出于某种原因我没有意识到它是区分大小写的:-/
-
你应该发布答案,然后所有人都可以看到:)
-
还没得到答案,才发现自己很蠢。我实际上得到了正确的路径,但它区分大小写。我还没有找到解决办法。