3

我正在从 RSS 提要中读取一些数据以显示在 android 设备上。

字符串开头的括号中可能有也可能没有标识符,例如

This is a title of something...

[Brochures] This is a brochure title

[Thought Leadership] This is something else

如果它有一个标识符,我想从字符串中删除它,然后再将其显示在屏幕上。我认为正则表达式是最好的方法,但在理解语法时遇到了一些麻烦。

非常感谢任何建议或解决方案。

4

9 回答 9

13
string.replaceAll("\\[.*?\\]","");
于 2013-01-21T19:05:44.013 回答
1

我的回答,作为 RegExp 方法的替代方法:)

public static String stripTag(String value) {
    if (value == null || !value.startsWith("[")) {
        return value;
    }
    int closeBracket = value.indexOf(']');
    if (closeBracket < 0) {
        // No closing bracket.
        return value;
    }
    return value.substring(closeBracket + 1).trim();
}
于 2013-01-21T19:09:36.707 回答
1

尝试这个:

String.replaceAll("[.*]","");
于 2013-01-22T06:44:43.417 回答
1

正则表达式是一种方式......但更快的方式是(如果方括号仅在标识符存在时出现在字符串中,并且标识符中没有方括号出现。)

String string = "[Thought Leadership] This is something else";
if(string.charAt(0) == '[')
    string = string.substring(string.indexOf("]") + 1).trim();
于 2013-01-21T19:11:37.863 回答
0

为什么

replaceAll("[", "").replaceAll("]", "") 

还不够好?

于 2013-01-21T19:05:27.380 回答
0

尝试这个

s=your string
int close=s.lastindexOf(']')
result=s.substring(close+1)
于 2013-01-21T19:06:09.890 回答
0

像这样的东西应该工作:

String s = "[Thought Leadership] This is something else";
String newString = s.replaceFirst( "\\[[^\\]]+\\]", "").trim();
System.out.println( newString); // Prints: This is something else
于 2013-01-21T19:06:29.707 回答
0

myString.replaceFirst("regex", "replacement")是您需要的方法。

正则表达式将类似于"^\\[.*\\]"您的替换字符串 eill 是空字符串""

于 2013-01-21T19:06:39.837 回答
0

您可以尝试以下正则表达式(一旦转义为 Java 可接受的格式):

\[.+\]\s?
于 2013-01-21T19:06:52.297 回答