你会如何分割 如果 String.Split(String[]) 不存在?

问题描述 投票:0回答:8

使用 .NET MicroFramework,这是 C# 的真正精简版本。例如,System.String几乎没有我们多年来享受的任何好处。

我需要将文本文档分割成行,这意味着分割 。但是,String.Split 只提供按字符分割,而不提供按字符串分割。

如何以有效的方式将文档分割成行(例如,不要在文档中的每个字符上疯狂循环)?

附注System.String 还缺少 Replace 方法,因此不起作用。
附言正则表达式也不是 MicroFramework 的一部分。

c# string split .net-micro-framework
8个回答
12
投票

你可以做

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

假设 µF 完全支持 Trim()。 Trim() 将删除所有空格,这可能很有用。否则使用

TrimEnd('\r')


6
投票

我会循环遍历文档中的每个字符,因为这显然是必需的。您认为

String.Split
如何运作?不过,我会尝试只击中每个角色一次。

保留迄今为止找到的字符串列表。重复使用

IndexOf
,将当前偏移量传递到字符串中(即上一个匹配项 + 2)。


3
投票

如何以有效的方式将文档分割成行(例如,不要在文档中的每个字符上疯狂循环)?

您认为内置的

Split
是如何工作的?

自己重新实现它作为扩展方法即可。


2
投票

关于:

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

或者

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

阅读.NET Micro Framework 3.0,此代码可以工作:

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

0
投票

这在某些情况下可能会有所帮助:

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

0
投票

如果您想要一个适用于整个字符串MicroFramework兼容分割函数,这里有一个可以解决这个问题,类似于使用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));
    }

0
投票
string[] lines = theText.Split(
    new string[] { "\r\n", "\r", "\n" },
    StringSplitOptions.None
);

在此输入链接描述

https://www.bytehide.com/blog/split-string-csharp


-2
投票

您可以用子字符串拆分字符串。

String.Split(new string[] { "\r\n" }, StringSplitOptions.None);
© www.soinside.com 2019 - 2024. All rights reserved.