假设我有一条类似这条的绳子:
“(.)示例: Hello。描述:这是一个很长的文本,有单词和浮雕。这是我需要的部分。这部分我不需要:示例的结尾。(.)
如何只获得这个子字符串:
这是一个长的文本,有文字和浮雕。这是我需要的部分。
我写的地方(.)是字符串的延续,我处理的是一个长文本,但在本例中只想得到Description。
我想要在“描述:”和下一个“之前的单词”之间的所有内容(单词、点、逗号等):
确切的例子是:
职位名称: Java程序员日期: 18/04/2014数量:4个空缺职位描述:在软件工厂下实现系统,与敏捷、Spring、Hibernate和GWT一起工作。计算机科学高等教育。TDD航线。敏捷方法知识,描述活动,TDD和BDD。有良好的沟通能力。注:福利:医疗保健/医疗集团,机票喂养,交通代金券计划租用: CLT (永久)小时:周一至周五上午8点至17小时30,午餐时间为1h30。
我需要:
在软件工厂下实现系统,使用敏捷、Spring、Hibernate和GWT。计算机科学高等教育。TDD航线。敏捷方法知识,描述活动,TDD和BDD。有良好的沟通能力。
在这种情况下,在"Description:“之后加上"Note:”之后的子字符串,但是这个第二个单词(Note:)可以是任何单词。这就是为什么我需要一个正则表达式,但不知道它是什么。
发布于 2014-04-19 00:45:12
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中的String是不可变的。original.substring不会更改原始字符串,只返回子字符串的新字符串。
发布于 2014-04-19 00:47:11
您可以使用拆分方法,如下所示:
String[] sentences = "This is a : test".split("[:]");
传递给拆分方法的参数是一个正则表达式,并返回每个除法的String数组。
例如,上面所示的方法将返回以下输出:
sentences[0] will be This is a"
sentences[1] will " test"
发布于 2014-04-19 01:00:17
如果您正在使用(<=)jdk1.6,并且正如您所说的文本可能是long,我不会使用substring()
来避免潜在的内存问题。
在两个:
之间使用regex非常简单:
with group::([^:]*):
无组:(?<=:)[^:]*
https://stackoverflow.com/questions/23164402
复制相似问题