【问题标题】:Can't replace punctuation in Java string [duplicate]无法替换 Java 字符串中的标点符号 [重复]
【发布时间】:2014-07-31 22:12:03
【问题描述】:

这是我的代码:

public void storeWords(String sentence)
{
    String[] wordlist = sentence.split("\\s+");

    int stringLength = wordlist.length;
    for(int j = 0; j < stringLength; j++)
    {
        wordlist[j].replaceAll("[^a-zA-Z ]", "");
        System.out.println(wordlist[j]);
    }
}

所以现在的 for 循环只是检查是否每个单词都替换了标点符号。没有。我还简单地检查了“sentence.replaceAll(.....)”,但仍然无法正常工作。关于我哪里出错的任何线索?

"If somebody falls and has no protection, do they get hurt?"

返回

"If"
"somebody"
"falls"
"and"
"has"`
"no"
"protection, "
"do"
"they"
"get"
"hurt?"

【问题讨论】:

  • replaceAll 是做什么的,究竟

标签: java android string replace


【解决方案1】:

字符串是不可变的,你必须这样做:

wordlist[j] = wordlist[j].replaceAll("[^a-zA-Z ]", "");

(不可变意味着一旦赋值就不能改变,所以需要重新赋值才能改变String的值)

【讨论】:

  • 天哪,我怎么总是忘记这一点。有时,我希望我再次使用 C 或 C++。谢谢!当我的计时器关闭时,我会接受它。
【解决方案2】:

你没有分配replaceAll()的结果,当我把它改成这个时-

wordlist[j] = wordlist[j].replaceAll("[^a-zA-Z ]", "");

我得到了输出(你的输入)

If
somebody
falls
and
has
no
protection
do
they
get
hurt

注意 Javadoc 中的 Returns 是“结果字符串”。

【讨论】:

    猜你喜欢
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    • 2018-12-26
    • 1970-01-01
    • 1970-01-01
    • 2021-07-06
    • 1970-01-01
    相关资源
    最近更新 更多