【问题标题】:How get a whole word with just a part of it?如何只用一部分得到一个完整的单词?
【发布时间】:2015-07-12 06:35:31
【问题描述】:

示例: 我有一个这样的字符串:

String query = "....COD_OP = 1 AND USER_DATA_SIGNIN = ...."

当它包含"_DATA_" 部分时,我需要获取整个单词 ("USER_DATA_SIGNIN")。

在 java 中是否可以反向使用某种子字符串?在这种情况下,我不知道如何获得 "USER" 部分。

【问题讨论】:

  • 你的预期输出是什么?
  • "USER_DATA_SIGNIN" ?
  • 你说“当它有 "_DATA_" 部分时,我需要得到整个单词”,这表明你想找到 USER_DATA_SIGNIN 但你是说“在这种情况下,我想获得"USER" 部分”。你能解释一下这里使用的逻辑吗?
  • 没错,在这种情况下,我想要整个单词,即“USER_DATA_SIGNIN”。我这么说是因为我知道如何获取字符串的右侧部分,但我不知道如何获取左侧部分
  • 那么请更新您的问题以消除这种混乱。

标签: java string substring


【解决方案1】:

简单的实现,空检查留给你:

    for (String string : query.split(" ")) {
        if(string.contains("_DATA_"))
        {
            System.out.println(string); // USER_DATA_SIGNIN
            System.out.println(string.split("_")[0]); // USER
        }
    }

【讨论】:

  • 谢谢!我不知道为什么我以前没有想过这个:P
  • 没问题,通常最简单的解决方案就是最好的解决方案。
【解决方案2】:

您可以使用负责 Java 中正则表达式机制的 Pattern/Matcher 类。您可以创建模式来表示在它之前和/或之后具有a-zA-Z0-9_ 字符(可以由\w 字符类表示)的单词

Pattern p = Pattern.compile("\\w*_DATA_\\w*");
Matcher m = p.matcher(text);
while(m.find()){
    System.out.println(m.group());
}

【讨论】:

  • 不错的替代品,效果也很好,非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-07
  • 1970-01-01
  • 1970-01-01
  • 2021-01-22
  • 1970-01-01
  • 2016-05-11
相关资源
最近更新 更多