2013-03-31 35 views
0

的標題我的意思是公共類的聲明總是相同的,但名稱有所不同:在常量字符串中查找變化字符串的最快算法/方法?

public class <class name>

我想搜索Java源代碼(在JTextArea)爲公共類。

所以首先它會發現:

public class Example1public class Example2public class Example3

等。

然後我想存儲字符串Example1Example2Example3

這個程序會用Java編寫。

誰能幫助我嗎?

UPDATE:

有一點點去,到Pattern和Matcher類很新。

private String findPublicClass() { 
    Pattern pattern = Pattern.compile("\\s*public\\s+class\\s+(\\w+)"); 
    Matcher matcher = pattern.matcher(txtSource.getText()); 
    String s = null; 
    boolean found = false; 
    while (matcher.find()) { 
     s = matcher.group(1); 
     found = true; 
    } 
    if(!found) 
     System.out.println("No public class found."); 
    return s; 
} 
+2

到目前爲止你有寫過任何代碼嗎?如果沒有,我建議給它一個最好的鏡頭,然後用一些示例代碼回到這裏,這樣我們可以更好地幫助你,所以我們知道你至少嘗試過。 – Franklin

+0

@Franklin我有一點點去。 – Ciphor

回答

-1

由於只是名稱改變常數部分是「公共類」,它有一個固定長度的說10.所以,你可以使用子(10)總是得到你的類名。

希望有所幫助。

編輯:

示例代碼

If(line.contains("public class")) 
    return line.substring(10); 
+0

是的,但可能有進口/包裝聲明? – Ciphor

+1

看到我的編輯,該shld工作。 – Lokesh

+1

注意神奇數字 – dantuch

3

我的建議是遵循從Java教程lessons on Regular Expressions

+0

我同意,使用模式和捕獲來找到並獲取您要查找的信息。它比做'子串'比較快得多 – mrres1

+0

只要看一看,這看起來是一個很好的方法,我會試着想出一些東西併發布我得到的東西。 – Ciphor

+0

@mthmulders我有一個快速去,但我是新來的。 – Ciphor

-1

那麼,一個快速,骯髒和非常快速的方法將讀取從位置0到L-1(長度)循環的字符串,並有索引「我」說明有多少字符匹配。

每次匹配一個字符,你都會++,否則i = 0;

這種方式,當我等於查找的字符串的長度,你會有一個匹配。其餘部分是您正在尋找的其他部分(可變部分)。

希望這會有所幫助!

相關問題