Pregunta

El uso de .NET MicroFramework que es una versión muy reducida de C #. Por ejemplo, System.String apenas tiene alguna de las golosinas que' he disfrutado a lo largo de los años.

Tengo que dividir un documento de texto en las líneas, lo que significa división por \ r \ n. Sin embargo, String.split sólo proporciona una división por char, no por la cadena.

¿Cómo puede Me dividir un documento en líneas de una manera eficiente (por ejemplo, no locamente bucle a través de cada caracter en el doc)?

P.S. System.String también falta un método replace, por lo que no va a funcionar.
P.P.S. Expresiones regulares no es parte de la MicroFramework tampoco.

¿Fue útil?

Solución

Puede hacer

string[] lines = doc.Split('\n');
for (int i = 0; i < lines.Length; i+= 1)
   lines[i] = lines[i].Trim();

Suponiendo que el mF apoya Trim () en absoluto. TRIM () eliminará todos los espacios, que podría ser útil. De lo contrario usar TrimEnd('\r')

Otros consejos

Me bucle a través de cada caracter en el documento, ya que eso no es claramente necesaria. ¿Cómo cree que las obras String.Split? Me gustaría tratar de hacerlo sólo golpear cada personaje una vez, sin embargo.

Mantener una lista de cadenas que se encuentran hasta el momento. Utilice IndexOf repetidamente, pasando el desplazamiento actual en la cadena (es decir, la coincidencia anterior + 2).

  

¿Cómo puede Me dividir un documento en líneas de una manera eficiente (por ejemplo, no locamente bucle a través de cada caracter en el doc)?

¿Cómo cree que la incorporada en las obras Split?

Al igual que reimplementar a sí mismo como un método de extensión.

¿Qué hay de:

string path = "yourfile.txt";
string[] lines = File.ReadAllLines(path);

o

string content = File.ReadAllText(path);
string[] lines = content.Split(
    Environment.NewLine.ToCharArray(),
    StringSplitOptions.RemoveEmptyEntries);

.NET Micro Framework 3.0 , este código puede trabajo:

string line = String.Empty;
StreamReader reader = new StreamReader(path);
while ((line = reader.ReadLine()) != null)
{
    // do stuff
}

Esto puede ayudar de alguna escenario:

StreamReader reader = new StreamReader(file);    
string _Line = reader.ReadToEnd();
string IntMediateLine = string.Empty;
IntMediateLine = _Line.Replace("entersign", "");
string[] ArrayLineSpliter = IntMediateLine.Split('any specail chaarater');

Si desea un MicroFramework compatible con la función de división que funcione para todo un cadena de caracteres , aquí hay uno que hace el truco, similar a la versión de los marcos regulares usando StringSplitOptions.None:

    private static string[] Split(string s, string delim)
    {
        if (s == null) throw new NullReferenceException();

        // Declarations
        var strings = new ArrayList();
        var start = 0;

        // Tokenize
        if (delim != null && delim != "")
        {
            int i;
            while ((i = s.IndexOf(delim, start)) != -1)
            {
                strings.Add(s.Substring(start, i - start));
                start = i + delim.Length;
            }
        }

        // Append left over
        strings.Add(s.Substring(start));

        return (string[]) strings.ToArray(typeof(string));
    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top