如何从包含搜索字符串的String获取char序列

时间:2015-06-20 16:01:18

标签: java string char contains

我想知道它们是否是JAVA中的一个函数,它允许从一个巨大的字符串中检索包含特殊字符的char序列。

示例:我有一个PHP页面,我已经进行了字符串化,并检查是否存在包含char" @"的char序列。如果是这样的话,我想得到包含搜索过的字符的整个字符序列。

我可以使用String.contains(" @")查找char但是如何获取包含它的char?

提前致谢!

3 个答案:

答案 0 :(得分:2)

您可以使用基于

的正则表达式

“mailto =(test@mail.com)”

如果在字符串化的php中找到了这个,你可以方便地提取带括号的部分。

但很可能它也可能是foo@bar.com,所以你可能不得不写一个更复杂的正则表达式,但它的工作方式相同。

这是与任何有效电子邮件地址匹配的版本:

"mailto = ([A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+(?:\\.[A-Za-z]){1,3}\\b)"

也许=之前和之后的空格无法保证,因此您可以将它们设为可选:

"mailto ?= ?(...)"

要执行匹配,请使用

Pattern pat = Pattern.compile( "mailto = ([A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+(?:\\.[A-Za-z]){1,3}\\b)" );

并且,使用字符串中的php,您可以执行

String php = ...;
Matcher mat = pat.matcher( php );
if( mat.find() ){
    String email = mat.group( 1 );
}

可以重复调用查找以查找所有事件。

有关与电子邮件地址匹配的正则表达式的讨论,请参阅another SO Q+A

答案 1 :(得分:1)

由于已经采用了正则表达式的想法,这是另一种方法

String test = "abc 123 456@789 abcde";
String charToFind = "@";

String strings[] = test.split(" ");
for( String str : strings ){
  if( str.contains(charToFind) ){ System.out.println(str); }
}

答案 2 :(得分:0)

您可以使用indexOfsubstring的组合来查找和提取子字符串。

如果没有关于源和搜索字符串的外观的更多信息,很难为您提供进一步的帮助。