【问题标题】:Split a string on the Empty Character literal. Break apart a string's symbols into an array在空字符文字上拆分字符串。将字符串的符号拆分为数组
【发布时间】:2012-10-31 16:47:44
【问题描述】:

我有以下字符串 =

"00101010"

我需要以下数组/列表:

var.ElementAt(0) = "0"
var.ElementAt(1) = "0"
var.ElementAt(2) = "1"
var.ElementAt(3) = "0"
var.ElementAt(4) = "1"
var.ElementAt(5) = "0"
var.ElementAt(6) = "1"
var.ElementAt(7) = "0"

如果我尝试 string.split(''),编译器会抱怨空字符文字。

感谢您的帮助。

【问题讨论】:

  • 您要求的内容与原始字符串不匹配。
  • 你不能只使用 str[index] 吗?
  • 当我想要一个数组时为什么要使用 str[i]?我不想循环。我想要动态。不是静力学。希望我能对 cme​​ts 投反对票
  • 正如您从我尝试过 string.split 的问题中看到的那样。不错的尝试

标签: c# arrays string split explode


【解决方案1】:

你可以使用 Linq:

var chars = "00101010".Select(c => c.ToString()).ToArray();

【讨论】:

    【解决方案2】:

    应该这样做:

    string mys = "hello";
    char[] thechars = mys.ToCharArray();
    

    【讨论】:

    • 但前提是 OP 需要 Char[] 而不是 String[] ;-)
    【解决方案3】:

    使用ToCharArray。但更相关的问题是您需要对结果做什么,因为 string 已经实现 IEnumerable<char> 允许您迭代并使用字符串中的字符做任何您需要的事情。

    【讨论】:

    • 他想要字符串,而不是字符。
    • 想要和他需要可能是两个非常不同的东西。
    【解决方案4】:

    如果要获取字符串中的特定字符,只需对该字符串进行索引即可;无需将其转换为任何内容的数组:

    var s = "0123";
    var c = s[0]; // -> '0'
    

    如果你真的需要字符串而不是字符,那么 Tim 的答案会起作用。

    【讨论】:

      【解决方案5】:

      有一个单行的正则表达式解决方案,它返回 string[] 而不是 char[]:

          var arr = Regex.Split(s, "(?<=.)(?=.)");
      

      如果有单行非 Linq 解决方案或更短的正确 reg-ex 会很有趣。

      注意:我会在其他正则表达式答案下发布,但由于缺少 @ 字符串前缀,它似乎已被删除,并且仅限于拆分数字。

      【讨论】:

        猜你喜欢
        • 2012-02-22
        • 2011-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-01
        相关资源
        最近更新 更多