在Android中的字符串中将“。”替换为“\ n \ n”

时间:2013-06-16 11:49:51

标签: java android replace special-characters

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

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

结果是每行没有单词的最后一个字母。我在这种情况下读到类似点的意思,但我怎么能真正指出这一点呢?

输入示例:“Hello world” 输出示例: 地狱 世界

谢谢

2 个答案:

答案 0 :(得分:1)

这里有一些可疑的东西; text不是String,或者您不使用.replace(),而是使用其他内容(.replaceAll()?),或者Android .replace()是错误的。

我坦率地怀疑Android开发者会有这样的忽视。

Javadoc for String#replace()说:

  

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

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

因此,如果您实际使用.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();
}

答案 1 :(得分:0)

如果您使用

,则该点表示任何字符
text=text.replaceAll(". ", "\n\n");

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

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

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