【问题标题】:Obtaining a specific substring of a string获取字符串的特定子字符串
【发布时间】:2016-07-22 09:11:57
【问题描述】:

我想知道是否有人可以提供帮助。我有一个类似于下面的大字符串:

Name="firstName" Description="this is a test description" date="01/01/2016".  

我想在java中做的是简单地抽象这个字符串的一小部分,即在引号中的描述之后的位,理想情况下会给我“这是一个测试描述”。谁能指导我如何实现这一目标?

谢谢。

【问题讨论】:

  • 你在看的是Regular Expressions
  • 这是json还是xml?也许你的问题可以得到不同的解决。

标签: java regex substring


【解决方案1】:

您可以使用以下正则表达式:.*Description=\"([\\w ]+)\".*"。您想要的字符串是捕获组 1。例如:

    Pattern pattern = Pattern.compile(".*Description=\"([\\w ]+)\".*");
    Matcher matcher = pattern.matcher(input);
    System.out.println(matcher.group(1));

【讨论】:

  • 感谢您的回复,感谢您的输入,但是当我对我的字符串使用该 Reg 表达式时,它似乎没有返回任何结果。我很可能做错了什么。我正在使用regex101.com 进行测试。谢谢
  • 每个正则表达式引擎都不同。每种语言都有其特殊性。您的问题是关于 Java 的,请在 Java 正则表达式引擎中进行测试,而不是在 PHP 引擎中进行测试。
【解决方案2】:

如果字符串和你那里的完全一样?

假设字符串看起来像这样,你可以使用 split。

 String description = str.split("\"")[3];

这将为您提供Description 引号之间的确切部分,只是一个拆分。您可以在此处使用 small example 运行它

作为一个小提示:这假设实际内容部分中没有"。 (在名字中,我假设这是一个安全的猜测,但我不确定描述部分是否可以这样说)

【讨论】:

  • 它不会像这样工作:str = Name="firstName" Description="this is a test description" date="01/01/2016". > String description = [Name="firstName", Description="this, is, a, test, description", date="01/01/2016".] > String descriptionContent = "this
  • @NathaëlNoguès 我更新了答案,你是对的 :-)
  • 这样它会起作用,但我个人认为这是一个丑陋的解决方案;并且您必须确保您的描述不包含任何\"
  • 当然是有效的解决方案,但在这种情况下,IMO 正则表达式更具可读性、灵活性和精确性。
  • @m0skit0 我同意并支持你的解决方案。很高兴看到替代解决方案并了解它们的优点/缺点。 :-)
猜你喜欢
  • 1970-01-01
  • 2011-10-06
  • 1970-01-01
  • 2021-03-10
  • 2012-09-16
  • 2012-12-28
相关资源
最近更新 更多