iT邦幫忙

0

Code Generation 5:利用JAVA將AS檔案轉成TS檔案型態-在原始程式中留下我要的資料下

2.區分是屬性還是方法,進而處理這個方法。

-取得屬性

在這個專案子,絕大部份的程式都有一定的規格,而屬性,他們要求是放益方法前面。而我隨機檢驗幾十個方法,都是如此,也沒有在方法和方法之間穿插屬性。

所以我在將整段文章從第一個字取到第一個function的前20個字,我將它標記為屬性區域。


		// 分區塊
		int index2 = str.indexOf("function");
		String str1 = str.substring(0, index2 - 7);
		int index3 = str1.lastIndexOf(";");
		str1 = str1.substring(0, index3);

		if (num == 1) {
			data += getNote(str1) + "\n";
		}
		String abc = founction1(str1);// 第一區塊進入方法處理
		data += abc + "\n";

		data += init();

		int index = index2 - 20;

-取得方法
之後利用堆疊的方式找出每一段方法。從剛才截取後的程式從第一個字開始找,遇到{時就開始記彔,當}為空時,就代表這個方法結束了。
因為方法內會有if,for迴圈之類有{}的程式,所以我用堆疊的方法記錄"{",當遇到"}"時,就取出一個"{", 但裡面是空的時後,就是
這個方法結束。這樣我就知道這個方法的長度了。

import java.util.Stack;
Stack<String> st = new Stack<String>();
		
//用堆疊的方式,有{就存起來,有}就拿出一個{,等到堆疊為空時,就代表這個的方法結束。
for (int i = index; i < str.length(); i++) {

	if (str.charAt(i) == '{') {
	//放入一個"{"
		st.push("{");
	} else if (str.charAt(i) == '}') {
			//拿出一個"{"
			st.pop();
		if (st.isEmpty()) {
			String str2 = str.substring(index, i + 1);//取出整段方法
			index = i + 1;

			String abc2 = founction2(str2);// 另外呼叫程式處理這個方法
		}
	}
}

其他:在整個程式完成後想到另一個分解屬性和方法區塊的作法。

整篇程式碼先用split("\n")將資料轉為字串陣列

原本是想說將資料用split("\n")將資料轉為字串陣列,然後逐行比對每一行,在找到function時,在該行最前面加入一個"@"

public static const NAME:String="A00I15Mediator";
private var a00i15VO:A00I15_SMT01_InputVO=new A00I15_SMT01_InputVO();//讀取系統變數
private var SYSLOGINBRH:String="";//txn.登入分行
private var SYSLOGINBRHNAME:String="";//txn.登入分行中文名称
		
protected override function get model():Object{}

@public function A00I15Mediator(viewComponent:Object=null){}

@public function get a00I15View():A00I15	{}

再把檔案合成一個檔案,再用split("@")分割,這就會是一個區塊,一個區塊的。
但是這樣,方法的註解就沒有被放到同一個方法內了。


尚未有邦友留言

立即登入留言