我需要拍一张 String
并删除其中以 character
开头的所有正则表达式'[' 并以 character
结尾']'.
现在我不知道如何解决这个问题。我试图转换 String
到字符数组,然后从任何开始的'['到他的结束']'放入空字符,然后将其转换回String
使用 toString()
方法。
我的代码:
char[] lyricsArray = lyricsParagraphElements.get(1).text().toCharArray();
for (int i = 0;i < lyricsArray.length;i++)
{
if (lyricsArray[i] == '[')
{
lyricsArray[i] = ' ';
for (int j = i + 1;j < lyricsArray.length;j++)
{
if (lyricsArray[j] == ']')
{
lyricsArray[j] = ' ';
i = j + 1;
break;
}
lyricsArray[j] = ' ';
}
}
}
String songLyrics = lyricsArray.toString();
System.out.println(songLyrics);
但是在 songLyrics 的打印行中,我得到了一些奇怪的东西,比如
[C@71bc1ae4
[C@6ed3ef1
[C@2437c6dc
[C@1f89ab83
[C@e73f9ac
[C@61064425
[C@7b1d7fff
[C@299a06ac
[C@383534aa
[C@6bc168e5
我想有一个简单的方法。任何帮助将不胜感激。
澄清一下:
转换 "abcd[dsadsadsa]efg[adf%@1]d"
入"abcdefgd"
最佳答案
或者简单地使用正则表达式来replace all \\[.*\\]
没有出现:
String songLyrics = text.replaceAll("\\[.*?\\]", "");
text
当然是:
String text = lyricsParagraphElements.get(1).text();
\\[.*\\]
是什么意思?
replaceAll
的第一个参数是描述正则表达式的字符串。正则表达式定义了在字符串中匹配的模式。
所以让我们把它分开:
\\[
完全匹配字符 [
。因为 [
有一个 special meaning在正则表达式中,它需要被转义(两次!)。
.
匹配任何字符,将其与 ( lazy ) 零或多个运算符 *?
相结合,它将匹配任何字符,直到它最终找到:
\\]
,匹配字符]
。再次注意转义。
关于java - 从字符串中删除所有以 char '[' 开头并以 char ']' 结尾的正则表达式实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36136162/