java - 返回字符串中找到的相同子字符串

标签 java

这里我有下面的代码。这个想法是使用像“R#GUPW*UIOPW#WERTY*RT#LLOPPPPER*CVW”这样的短语来返回这样的模式

“#GUPW*”
“#WERTY*”
“#LLOPPPPER*”

返回短语中以 # 开头、以 * 结尾的所有子字符串。所以这个短语中有 3 个。

import java.io.*;

public class Pattern {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here

        String phrase = "R#GUPW*UIOPW#WERTY*RT#LLOPPPPER*CVW";
        String found ="";

        for (int y = 0; y<phrase.length(); y++)
        {
        found = found + phrase.substring(phrase.indexOf("#"), phrase.indexOf("*"));
        }
        System.out.println(found);
    }

}

但是我的代码返回 “#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW #GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW"

如何从我的短语中返回这些以 # 开头并以 * 结尾的子字符串。

“#GUPW*”
“#WERTY*”
“#LLOPPPPER*”

最佳答案

解决方案是定义一个Pattern,然后在Matcher中使用它。

List<String> allMatches = new ArrayList<String>();
Pattern p = Pattern.compile("#[^*]+\\*");
Matcher m = p.matcher(yourString);
while (m.find()) {
   allMatches.add(m.group());
 }

然后,所有匹配项都会出现在列表中。

演示:

String s = "R#GUPW*UIOPW#WERTY*RT#LLOPPPPER*CVW";
List<String> allMatches = new ArrayList<String>();
Pattern p = Pattern.compile("#[^*]+\\*");
Matcher m = p.matcher(s);
while (m.find()) {
    allMatches.add(m.group());
}

for (String str : allMatches) {
    System.out.println(str);
}
>>#GUPW*
>>#WERTY*
>>#LLOPPPPER*

关于java - 返回字符串中找到的相同子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41675585/

相关文章:

Java长正则表达式

java - 这个链表分区算法是如何工作的?

java - findMin 惰性删除二叉搜索树

java - Spring Boot 社交媒体 - facebook 登录

java - 无法将上下文从主 Activity 传递到 AsyncTask 以显示 AlertDialog - Android/Java

java - 使用 Spring Boot 从数据库检索列表

java - Mac OS Yosemite 上缺少 JDK 1.8 虚拟机

java - Maven 在 ZIP 中复制文件

java - 在 WebSphere7 中,当对象保留内存和共享类缓存已满 100% 时,Dozer 中出现 ClassCastException

java - OpenOffice API : Saving Impress (presentation) document as self-contained file