Come posso leggere una stringa molto lunga dal file di testo e quindi elaborarla (divisa in parole)?Come dividere un file enorme in parole?
Ho provato il metodo StreamReader.ReadLine()
, ma ottengo un'eccezione OutOfMemory
. Apparentemente, le mie battute sono estremamente lunghe. Questo è il mio codice per la lettura del file:
using (var streamReader = File.OpenText(_filePath))
{
int lineNumber = 1;
string currentString = String.Empty;
while ((currentString = streamReader.ReadLine()) != null)
{
ProcessString(currentString, lineNumber);
Console.WriteLine("Line {0}", lineNumber);
lineNumber++;
}
}
E il codice che si divide la linea in parole:
var wordPattern = @"\w+";
var matchCollection = Regex.Matches(text, wordPattern);
var words = (from Match word in matchCollection
select word.Value.ToLowerInvariant()).ToList();
Quale algoritmo/metodo si è utilizzato per l'operazione di suddivisione? – byako
@byako, qui è il metodo che uso per questo: 'pubblici static IEnumerable GetLowercasedWords (stringa di testo) { se (String.IsNullOrEmpty (testo)) { ritorno null; } var wordPattern = @ "\ w +"; var matchCollection = Regex.Matches (testo, wordPattern); var words = (dalla parola corrispondente a matchCollection selezionare word.Value.ToLowerInvariant()). ToList(); parole di ritorno; } 'Ci scusiamo per la formattazione. –
Meglio aggiungere come è stato implementato lo StreamReader, in modo che le persone possano trovare errori lì. Non c'è un limite di 140 caratteri per le domande. – Jens