我有以下字符串
34rf;43jh<helloworld>guge73g34/
我基本上想要“&lt;”之外的所有内容和“&gt;”要从字符串中删除,以便它返回:
<helloworld>
我怎么能这样做?
答案 0 :(得分:2)
我有一些建议,我可能会做这样的事情
public static String parse(String in) {
// Find the open '<'.
int p1 = in.indexOf('<');
// If we found an open less-then, check for next closing greater-then
int p2 = (p1 < 0) ? -1 : in.indexOf('>', p1 + 1);
if (p2 >= 0) {
// Found it... return the sub-string.
return in.substring(p1, p2 + 1);
}
// return the input? might want "" instead.
return in;
}
答案 1 :(得分:2)
使用正则表达式:
String str = "34rf;43jh<helloworld>guge73g34/";
Pattern bracketPattern = Pattern.compile("<(.*?)>");
Matcher m = bracketPattern.matcher(str);
if (m.find())
String match = m.group(1);
答案 2 :(得分:2)
哦,你有很多方法可以达到这个目标......这是实现你所需要的一种方式。
String input = "34rf;43jh<helloworld>guge73g34/";
int start = input.indexOf('<');
int end = input.indexOf('>');
System.out.println(input.substring(start, end+1));
这是使用正则表达式和使用replaceFirst方法实现相同的另一种方法
System.out.println(input.replaceFirst(".*<", "<").replaceFirst(">.*", ">"));
然而,如果您有多个标签并且想要查找所有标签,则这两个不是好的候选者。在那你可以明显地去寻找正则表达式并使用它来找到所有标签。下面的答案之一已经说明了如何做到这一点,所以我没有这样做。
答案 3 :(得分:0)
如果你只有一个“&lt;”和一个“&gt;”您可以像这样使用String.split()方法:
String myWord = myWord.split("<")[1];
myWord = myWord.split(">")[0];
myWord = "<" + myWord + ">";
答案 4 :(得分:0)
你基本上有两个目标。
1)找到每个括号的索引。 Cosider以下代码:
static String input = "34rf;43jh<helloworld>guge73g34/";
int firstBracketPosition = 0;
int lastBracketPosition = 0;
firstBracketPosition = input.indexOf("<");
lastBracketPosition = input.lastIndexOf(">");
前三行是变量声明。第四行找到第一次出现的“&lt;”,并返回索引。第五行找到“&gt;”的最后一次出现并返回索引。这些索引存储在各自的变量中。
2)您想要抓住两个括号之间的文本。 (包括括号)。 请考虑以下代码:
static String output = "";
output = input.substring(firstBracketPosition, lastBracketPosition + 1);
System.out.println(output);
第一行是变量声明。第二行获取两个括号索引之间的输入字符串的一部分,将一个添加到最终位置以包括输出字符串中的最后一个括号。最后一行打印output
。
使用您提供的代码,打印此程序
<helloworld>