【问题标题】:how to change String to Array and replace all punctuation marks [duplicate]如何将字符串更改为数组并替换所有标点符号[重复]
【发布时间】:2016-06-07 12:28:01
【问题描述】:

我有一个字符串,我想将其更改为 Array next 仅在一行中显示拆分单词。 我不知道该怎么做我唯一的想法就是这样做:

public static void main(String[] args) {
    String ciag="Hello My name is Tomek, i am from Mars.";
    ciag=ciag.replaceAll(",", "").replaceAll(".", "");
    System.out.println(ciag);

但这也是错误的 任何建议的

【问题讨论】:

  • replaceAll 接受正则表达式,. 匹配字符串中的所有内容。请改用replace
  • 火星人应该已经知道了。
  • 建议:仔细阅读 javadoc 以了解您正在调用的函数。通常情况下,您需要了解的关于它们的所有信息都已经写在此处了。是的,在这里提问很有趣……但是阅读 javadoc 更有效率。无论如何,我猜因为没有进行先前的研究而被否决并不是真正有趣的事情。

标签: java arrays string


【解决方案1】:

这会奏效。

String ciag="Hello My name is Tomek, i am from Mars.";
ciag=ciag.replace(",", "").replace(".", "");
System.out.println(ciag);
String[] arr = ciag.split("\\s+");

replaceAll() 使用 RegEx 替换,在 RegEx 中 . 代表任何字符。使用replace()

split() 也采用正则表达式,\s+ 匹配一个或多个空格。

【讨论】:

  • @cricket_007 更新中。
  • 你也可以保留replaceAll。 [,.] 会工作
【解决方案2】:
String ciag="Hello My name is Tomek, i am from Mars.";
String[] words = ciag.replaceAll("[,.]", "").split("\\s+");

测试:

System.out.println(Arrays.asList(words).toString());

输出:

[Hello, My, name, is, Tomek, i, am, from, Mars]

解释:

[,.] 是一个正则表达式。 [] 是一个字符类,这意味着正则表达式将匹配括号内的任何字符。所以[,.] 表示匹配逗号或句号。此字符类的任何匹配项都将替换为空字符串replaceAll("[,.]", ""),因此,所有逗号和句号都将被删除。

替换完成后,我们用另一个匹配一个或多个空格的正则表达式\\s+分割结果字符串。所以split("\\s+") 会将字符串拆分成单词。

【讨论】:

  • 但输出不同我不需要括号和逗号
  • @TomaszPiotrowski 这就是运行Arrays.asList(String[]).toString() 时输出的样子,因为它是 String[] 而不是 String...
  • 或者我不能把它放在正确的地方
  • @TomaszPiotrowski 你是什么意思它不起作用?它非常适合您的问题规范。
  • 没关系,我认为我的错误
猜你喜欢
  • 2015-01-03
  • 2020-08-12
  • 1970-01-01
  • 2019-01-11
  • 1970-01-01
  • 1970-01-01
  • 2014-07-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多