假设我们有一个格式如下的字符串:
"@tag some text goes here and @tag nobody @tag should care about it @tag"
我想剪切字符串并从第一个标记到最后一个标记(不包括标记)获得完全相同的文本。
Java库中是否有一个允许我这样做的方法,还是我必须自己实现它?我没有找到任何有用的东西。
答案 0 :(得分:1)
您可以使用标准String
方法实现它,如下所示:
@tag
indexOf
的位置
@tag
lastIndexOf
的位置
substring
replaceAll
以下是编码方式:
String str = "@tag some text goes here and @tag nobody @tag should care about it @tag";
String tag = "@tag";
int start = str.indexOf(tag);
int end = str.lastIndexOf(tag);
if (start >= 0 && end > start) {
String res = str
.substring(start, end)
.replaceAll(Pattern.quote(tag)+"\\s*", "")
.trim();
System.out.println("Result: '"+res+"'");
} else {
System.out.println("Tag not found.");
}
请注意使用Pattern.quote
- 这是为了安全起见,以防您的实际标记包含正则表达式元字符。
还请注意正则表达式后的+"\\s*"
。它会删除标记之后的空格(如果有的话)。
答案 1 :(得分:1)
您可以使用indexOf
加长度和lastIndexOf
来帮助您,replaceAll
摆脱中间的标签。
String s = "@tag some text goes here and @tag nobody @tag should care about it @tag";
String searchString = "@tag";
int begin = s.indexOf(searchString) + searchString.length();
int end = s.lastIndexOf(searchString);
String between = s.substring(begin, end);
String withoutSearchString = between.replaceAll(searchString, "");
System.out.println(withoutSearchString);
答案 2 :(得分:1)
您需要以下内容。
你的字符串是
String string = "@tag some text goes here and @tag nobody @tag should care about it @tag";
将其拆分为由@tag
String[] tags = string.split("@tag");
遍历每个数组并删除前4个字符(@tag)
for(int i = 0; i < tags.length; i++)
tags[i] = tags[i].substring(4);
希望这有帮助。如果您阅读String class
,有很多方法可以做到