如何获得"之间的子串:"

时间:2014-04-19 00:35:57

标签: java regex substring

假设我有一个像这样的字符串:

  

“(...)示例:Hello world。描述:这是一个长文本,带有单词和   ponctuation。这是我需要的部分。这部分我不需要:结束   这个例子。 (...)“

我如何才能获得此子字符串:

  

这是一个长文本,带有单词和ponctuation。这是我需要的部分。

我写的(...)是字符串的延续,我正在处理一个长文本,但在这种情况下只想得到描述

我希望“描述:”和下一个“:”之前的单词之间的所有内容(单词,小点,逗号等)

确切示例:

职位名称:Java程序员日期:18/04/2014数量:4职位空缺职位描述:在软件工厂下实施系统,使用Agile,Spring,Hibernate和GWT。计算机科学高等教育。 TDD课程。熟悉敏捷方法,描述活动,TDD和BDD。有良好的沟通。备注:福利:医疗保健/医疗集团,门票,交通代金券计划招聘:CLT(常设)营业时间:周一至周五上午8点至17点30分,午餐时间为1小时30分。

我需要:

在软件工厂下实施系统,使用Agile,Spring,Hibernate和GWT。计算机科学高等教育。 TDD课程。熟悉敏捷方法,描述活动,TDD和BDD。沟通良好。

“Description:”之后的子字符串和“Note:”之前的子字符串,但是这个第二个字(Note :)可以是任何单词。这就是为什么我需要一个正则表达式,但不知道它是什么。

3 个答案:

答案 0 :(得分:3)

String original = "This is a string: Here is what you want: Maybe you want this too?";
int firstColon = original.indexOf(':');
int secondColon = original.indexOf(':', firstColon+1);
if (secondColon != -1) {
    String parsed = original.substring(firstColon+1, secondColon);
} else {
    //2 colons not found
}

上面的代码找到:字符的第一个索引并存储它。然后它会在原始文件之后找到下一个:。如果找到第二个冒号(if语句),则解析并存储该字符串。 String.substring包含第一个索引,不包括最后一个索引。要修剪任何前导或尾随空格,请将.trim()添加到已解析行的末尾。要仅扫描第一个冒号,请使用以下命令。 (这会修剪字符串)

String original = "This is a string: Here is what you want: Maybe you want this too?";
int firstColon = original.indexOf(':');
if (firstColon != -1) {
    String parsed = original.substring(firstColon+1).trim();
} else {
    //One colon not found
}

需要注意的是java中的字符串是不可变的。 original.substring不会更改原始内容,只返回子字符串字符的新String。

答案 1 :(得分:0)

您可以使用split方法,如下所示:

String[] sentences = "This is a : test".split("[:]");

传递给split方法的参数是一个正则表达式,并返回每个分区的字符串数组。

例如,上面显示的方法将返回以下输出:

sentences[0] will be This is a"
sentences[1] will " test"

答案 2 :(得分:0)

如果您正在使用(< =)jdk1.6 ,并且正如您所说的文字可能,我将不会使用{{1} },以避免潜在的内存问题。

正则表达式可以直接在两个substring()

之间进行处理

与群组::

没有小组::([^:]*):