我怎么能拆分或有其他方法。?

时间:2016-07-26 08:54:44

标签: c#

例如

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"}; 

4 个答案:

答案 0 :(得分:4)

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

var result = input.ToArray();

或更好

result = input.ToCharArray();

string - 方法不仅仅是IEnumerable<char>的扩展方法。

答案 1 :(得分:2)

假设结果应为convertfunc = lambda x: float(x.strip("%"))/100 # remove % and return the value in float (between 0 and 1) TypeError: a bytes-like object is required, not 'str'

string[]

如果输出类型也可以是string str = "A+B-D*E"; string[] result = str.Select(x => x.ToString()).ToArray(); 我建议

char[]

答案 2 :(得分:1)

将其存储在字符数组中

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

OR

var chars = s.ToArray();

答案 3 :(得分:0)

如果您想要分割多个字符并且想要保留分隔符,则可以使用此方法:

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