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

これを試して:

String.replaceAll("[.*]","");
于 2013-01-22T06:44:43.417 に答える
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 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")必要な方法です。

正規表現は次のよう"^\\[.*\\]"になり、置換文字列は空の文字列になります""

于 2013-01-21T19:06:39.837 に答える
0

次の正規表現を試すことができます(Javaで受け入れ可能な形式にエスケープした後)。

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