JAVAコードトレーニング(その4)

2150 ワード

日语:この间、Pythonの开発に専念していましたが、JAVAのコードは忘れてしまいました.だからいくつかのテーマを探して訓練しました.
E-version:so a long time I major in python dev. many aspects about java almost forget.so now I found some problems to practice.
問題:
AS-LIKE
  • 各単語は26文字の大文字または小文字の英字で構成され、'-'は単語コネクタとして使用される場合、単語の一部とみなされるが、1つの単語の中で1回しか連続できず、2つの'-'以上が連続して現れる場合、「aa--bb」の「-」はセパレータとみなされ、2つの単語は「aa」と「bb」とみなされ、単語を構成しない文字は、単語間隔記号とみなされます.反転後の単語間隔をスペースで表す必要があります.元の文字列に隣接する単語間に複数の間隔がある場合、反転変換後に1つのスペース間隔のみが表示されます.単語ごとに最長20文字です.
  • String pInput = "I am a - student";
    String pResult = "student a am I";
    
    
    

    インプリメンテーション
    IMPL
    public int converse(String pInput, StringBuffer pOutput) {
    		String[] strs = pInput.split(" ");
    		for (int i = strs.length - 1; i >= 0; i--) {
    			strs[i] = wordmod(strs[i]);
    			if (strs[i].indexOf("--") == 1) {
    				System.out.println(strs[i]);
    				String[] r = strs[i].split("--");
    				strs[i] = "";
    				for (int j = r.length - 1; j >= 0; j--) {
    					if (j == 0) {
    						strs[i] += r[j];
    					} else
    						strs[i] += r[j] + " ";
    				}
    			}
    			if (strs[i] == "") {
    				continue;
    			} else {
    				if (i == 0) {
    					pOutput.append(wordmod(strs[i]));
    				} else {
    					pOutput.append(wordmod(strs[i]) + " ");
    				}
    			}
    		}
    		pOutput.trimToSize();
    		return 0;
    	}
    
    	private String wordmod(String str) {
    		if (str.length() == 1 && str.charAt(0) == '-') {
    			return "";
    		}
    
    		String n_Str = "";
    		for (int i = 0; i < str.length(); i++) {
    			if (str.charAt(i) >= 'a' && str.charAt(i) <= 'z' || str.charAt(i) >= 'A' && str.charAt(i) <= 'Z'
    					|| str.charAt(i) == '-' || str.charAt(i) == ' ') {
    				n_Str += str.charAt(i);
    			} else {
    				continue;
    			}
    		}
    
    		if (n_Str.length() >= 2) {
    			if (n_Str.charAt(0) == '-') {
    				n_Str = n_Str.substring(1);
    			}
    			if (n_Str.charAt(n_Str.length() - 1) == '-') {
    				n_Str = n_Str.substring(0, n_Str.length() - 1);
    			}
    		}
    		return n_Str;
    	}