摆脱字符串java中括号外的任何东西

时间:2013-11-29 01:55:50

标签: java string

我有以下字符串

34rf;43jh<helloworld>guge73g34/

我基本上想要“&lt;”之外的所有内容和“&gt;”要从字符串中删除,以便它返回:

<helloworld>

我怎么能这样做?

5 个答案:

答案 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>