【问题标题】:How do I use regex to split a string into characters?如何使用正则表达式将字符串拆分为字符?
【发布时间】:2009-07-16 15:29:53
【问题描述】:

我需要学习 RegEx,但现在没有时间解决这个问题。 -- 所以我正在尝试利用社区的能力。

我有一个包含可接受的 1 字符注释变量列表的字符串。

String comments = "#;";

我想要:

String[] parsedComments = {"#", ";"};

什么 RegEx 字符串可以解决我的问题?

String[] parsedComments = comments.split(/*  "???"  */);

【问题讨论】:

    标签: java regex


    【解决方案1】:

    为什么要使用正则表达式?以String.toCharArray() 为例。

    【讨论】:

    • 我同意使用正则表达式是矫枉过正,但你的例子给出了 char [] 结果而不是 String[] 结果。
    • 确实如此。但是字符数组是一种更好的数据结构,用于存储 - 好吧 - 字符数组,当然,除非您出于某些模糊的原因绝对需要字符串数组。但是可以更新任何本地代码以使用更直观的char[] 类型。
    【解决方案2】:

    除了其他奇怪的技巧之外,应该这样做:

    String[] parsedComments = comments.split("(?!^)");
    

    不过,对于正则表达式来说,这几乎不是一份工作。也可以只遍历字符串并从每个 1 字符的子字符串中构建一个数组。

    【讨论】:

    • 不完全 - 我得到 ["", "#", ";"] 的结果,也可以通过使用 "" 作为 split 的参数来获得。
    • 喂。我正在 Perl 中测试正则表达式,但它没有这样做。编辑为可能抑制空字符串。
    • "(?
    【解决方案3】:

    首先,为什么需要将它们分解成一个数组? String 具有几乎完全相同的方法来获取索引中的字符,并且性能几乎相同。

    但是,回答你的问题:

    string.split("");
    

    这将在结果数组的第一个位置为您提供一个额外的空字符串。

    【讨论】:

    • 谢谢。看起来我试图让它变得比它需要的更复杂。
    【解决方案4】:

    我尝试将此作为评论添加到“Daniel”和“Lazarus”,但我还没有足够的声望点...除非我误解了你,否则你是说使用索引访问原始字符串.你不能在 Java 中做到这一点。

    String foo = "abcde";
    String bee = foo[1]; // not valid
    

    如果我误解了你,我很抱歉。如果不是,我想为后代澄清这一点。 :-)

    【讨论】:

    • 你是对的:Java 字符串不仅仅是一个字符数组。你可以通过它的索引访问一个字符,但是你可以通过charAt()方法来做到这一点。 (或 codePointAt() 如果你想允许代理对。)
    【解决方案5】:

    我在原来的答案中误解了你。你不想要正则表达式。正则表达式用于查找模式,而您只想拆分。您可以使用空字符串,但这将返回一个空字符串以及字符。

    只需通过索引访问。

    【讨论】:

      【解决方案6】:

      只需使用 cmets[0], cmets[1] ... cmets[n]

      访问字符串索引

      【讨论】:

      • 不是Java;见 cjstehno 的回答。
      猜你喜欢
      • 1970-01-01
      • 2015-08-22
      • 2022-01-15
      • 2011-12-28
      • 2017-02-23
      相关资源
      最近更新 更多