1

我尝试在字符串中将“.”替换为“\n\n”,但它不起作用,我使用以下代码:

                text=text.replace(". ","\n\n");

结果是每行中的每个单词都没有单词的最后一个字母。在这种情况下,我读到了点表示任何字符之类的内容,但是我如何才能真正引用该点呢?

输入示例:“Hello world” 输出示例:Hell world

谢谢

4

2 回答 2

1

这里有一些可疑的东西;要么text不是 a String,要么您不使用.replace()其他东西(.replaceAll()?),或者 Android.replace()有问题。

坦率地说,我怀疑 Android 开发人员会忽略这种情况。

JavadocString#replace()说:

用指定的文字替换序列替换此字符串中与文字目标序列匹配的每个子字符串。[强调我的]

与使用正则表达式的同级方法 (.replaceFirst()和) 不同,它不使用(事实上它在内部确实使用,至少在 Oracle 的 JDK [*] 中,这不是问题)。.replaceAll().replace()Pattern

因此,如果您实际使用.replace()并获得您所说的结果,这是Android中的一个错误。如果是这种情况,请尝试替代方法,例如(未测试):

public static String realStringReplace(final String victim, final String target,
    final String replacement)
{

    final int skip = target.length();
    final StringBuilder sb = new StringBuilder(victim.length());

    String tmp = victim;
    int index;

    while (!tmp.isEmpty()) {
        index = tmp.indexOf(target);
        if (index == -1)
            break;
        sb.append(tmp.subString(0, index)).append(replacement);
        tmp = tmp.subString(index + skip);
    }

    return sb.append(tmp).toString();
}
于 2013-06-16T12:07:14.350 回答
0

如果您使用,该点表示任何字符

text=text.replaceAll(". ", "\n\n");

也许你发布了错误的代码,在这种情况下试试这个:

text=text.replaceAll("\\. ", "\n\n");

奇怪的是,这条线相当于你发布的那条线..

于 2013-06-16T12:13:00.827 回答