Question

Utilisation du MicroFramework .NET qui est une version vraiment coupé vers le bas de C #. Par exemple, System.String a à peine un des goodies que nous » avons bénéficié au cours des années.

Je dois diviser un document texte en lignes, ce qui signifie que le fractionnement par \ r \ n. Cependant, String.Split ne fournit qu'une division par char, non par chaîne.

Comment découper un document en ligne d'une manière efficace (par exemple pas en boucle éperdument à travers chaque caractère dans la doc)?

P.S. System.String manque également une méthode Replace, de sorte que cela ne fonctionnera pas.
P.P.S. Regex ne fait pas partie du MicroFramework soit.

Était-ce utile?

La solution

Vous pouvez faire

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

En supposant que le uF supporte trim () du tout. Trim () supprimera tous les espaces, qui pourraient être utiles. Sinon, utilisez TrimEnd('\r')

Autres conseils

Je voudrais boucle à travers chaque caractère dans le document, parce que c'est clairement nécessaire. Comment pensez-vous des œuvres de String.Split? Je voudrais essayer de le faire que de frapper chaque personnage une fois, cependant.

Gardez une liste de chaînes trouvées jusqu'à présent. Utilisez IndexOf à plusieurs reprises, en passant dans le courant de décalage dans la chaîne (à savoir la correspondance précédente + 2).

  

Comment découper un document en ligne d'une manière efficace (par exemple pas en boucle éperdument à travers chaque caractère dans la doc)?

Comment pensez-vous que les travaux de Split intégré?

Il suffit de ré-écrire vous-même comme une méthode d'extension.

Qu'en est-il:

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

ou

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

.NET Micro Framework 3.0 , ce code peut travail:

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

Cela peut aider dans un scénario:

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 vous souhaitez MicroFramework compatible fonction split qui fonctionne pour un ensemble chaîne de caractères , voici celui qui fait le tour, semblable à la version des cadres réguliers en utilisant 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));
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top