我怎么能分开,或者有其他方法吗

本文关键字:其他 方法 或者 能分开 | 更新日期: 2023-09-27 17:58:34

例如。

string str="A+B-D*E";

我想得到像那样的阵列

string[] list=new string{"A","+","B","-","D","*","E"};

所以我试着搜索。但这不好。

https://msdn.microsoft.com/en-us/library/system.string.split.aspx

更新:我不想要ToArrayToCharArray。事实上,我的例子是错误的。我想要string[]

例如:

String sample = "AB+CD+EF";
String[] result = new[]{"AB","+","CB","+","EF"}; 

我怎么能分开,或者有其他方法吗

简单地将字符串转换为字符数组只不过是一个字符列表:

var result = input.ToArray();

或者更好的

result = input.ToCharArray();

其中string-方法不仅仅是IEnumerable<char>

假设结果应该是string[]

string str = "A+B-D*E";
string[] result = str.Select(x => x.ToString()).ToArray();

如果输出类型也可以是char[],我推荐

char[] result = str.ToCharArray();

将其存储在字符数组中,而不是中

string s = "A+B-DE";
var chars = s.ToCharArray();

var chars = s.ToArray();

如果你想用多个字符分割,并且你想保留分隔符,你可以使用这个方法:

public static string[] Split(string input, bool keepDelimiters, params char[] delimiter)
{
    if (input == null) throw new ArgumentNullException(nameof(input));
    if (delimiter == null) throw new ArgumentNullException(nameof(delimiter));
    if (input.Length <= 1) return new[] {input};
    List<string> tokens = new List<string>();
    int start = 0, index;
    while ((index = input.IndexOfAny(delimiter, start)) > 0)
    {
        tokens.Add(input.Substring(start, index - start));
        if (keepDelimiters)
            tokens.Add(input[index].ToString());
        start = index + 1;
    }
    if (start < input.Length)
        tokens.Add(input.Substring(start));
    return tokens.ToArray();
}

您的样品:

string[] result = Split("A+B-D*E", true, '+', '-', '*', '/');
foreach(string token in result) 
    Console.WriteLine(token);

结果:

A
+
B
-
D
*
E