【问题标题】:How can I verify that my string ends with a particular data?如何验证我的字符串是否以特定数据结尾?
【发布时间】:2014-08-04 18:40:28
【问题描述】:

我有一个字符串

String s = "a/b/c/d/data/info";

我需要找到的是info 存在。 info 应该紧跟在 data 之后。如何验证我的字符串是否以特定数据 (info) 结尾?

UPD

我需要查找并检索 .../data/{thisString} 之后的字符串

【问题讨论】:

  • 您可以尝试使用 split("/") ,它应该返回一个 String[],您可以遍历并检查是否以 info 结尾,然后在需要时访问它

标签: java regex parsing


【解决方案1】:
s.endsWith( "data/info" )

true

编辑: 好的,所以“信息”只是您对任何字符串的替代。您可以使用indexOf 检查“data/”,然后使用substring 获取“信息”部分。

  String s = "a/b/c/data/info";
  String info = null;
  if( s.indexOf( "data/" ) >= 0 ) {
     info = s.substring( s.indexOf( "data/" ) + "data/".length() );
  }
  System.out.println( info );

【讨论】:

  • 其实我需要得到info。我的意思是我需要得到data/之后的字符串。
  • “获取”信息是什么意思?这是一个常量字符串。
  • "a/b/c/data/John" > "约翰"
【解决方案2】:

你可以使用:

String repl = "a/b/c/d/data/info".replaceFirst("^.*?data/([^/]+)$", "$1");
//=> info

【讨论】:

  • 但是如果我有/asdasd/asd/data/someOtherString?我无法检索someOtherString
  • 在这种情况下,您将得到从上面返回的someOtherString
  • Coding Horror: "有些人在遇到问题时会想“我知道,我会使用正则表达式。”现在他们有两个问题。 ;-)
  • @barbara:你确定你在这里检查了更新的代码吗?
  • 我认为问题在于您试图设置info。但这实际上是可变数据。
【解决方案3】:

数据/后的用户名:

String s = "a/b/c/d/data/info";

System.out.println(s.split("data/")[1]);

输出:

info

【讨论】: