Ciao a tutti!
ho bisogno di una mano sulla comparazione di stringhe perché io non riesco a venirne a capo da solo: gestendo dei file CSV, voglio verificare che la prima riga di ciascun file corrisponda a quella che io definisco come "intestazione standard". Ho quindi creato una proprietà dell'app (in Settings.Default) di tipo string in cui ho copia/incollato la prima riga di un file che so essere corretto.
Al momento dell'importazione di un nuovo file, lo apro in uno StreamReader, eseguo la ReadLine e poi confronto la stringa ottenuta con l'impostazione di cui sopra.
Il problema nasce nel momento in cui, pur aprendo lo stesso file da cui son partito per fare il copia/incolla, ottengo che le stringhe son diverse!
Riporto di seguito il codice che uso
using (StreamReader reader = new(path))
{
//Verifico le intestazioni di colonna
string currentHeaders = reader.ReadLine();
for(int i = 0; i < currentHeaders.Length; i++)
{
Debug.WriteLine($"Carattere {i}: {currentHeaders[i]} - {Settings.Default.csvHeaders[i]} => { currentHeaders[i] == Settings.Default.csvHeaders[i]}");
}
if (Settings.Default.csvHeaders != currentHeaders)
{
//eccetera eccetera...
Entro sempre nell'if, quando mi aspetterei di non entrarci (meno che mai se apro il file da cui son partito... )
Il ciclo for l'ho aggiunto momentaneamente per provare a vedere quali caratteri non combaciano e l'output è il seguente:
...
Carattere 59: T - T => True
Carattere 60: ? - À => False
Carattere 61: - => True
...
Carattere 81: T - T => True
Carattere 82: ? - À => False
Carattere 83: ; - ; => True
...
Carattere 92: T - T => True
Carattere 93: ? - À => False
Carattere 94: _ - _ => True
...
Il carattere a sinistra è quello che ottengo dalle impostazioni, mentre quello di destra arriva dalla ReadLine.
Potrebbe essere un problema di Encoding dello StreamReader? Cosa devo studiare per approfondire? Avete qualche suggerimento da provare per risolvere?
Grazie in anticipo