0

この形式の文字列を含むファイルがあります:

ACHMU)][2:s,161,(ACH Payment Sys Menus - Online Services)][3:c,1,(M)][4:c,1,(N)]
ACLSICZ)][2:s,161,(Report for Auto Closure)][3:c,1,(U)][4:c,1,(N)]
ACMPS)][2:s,161,(Account Maintenance-Pre-shipment Account)][3:c,1,(U)][4:c,1,(N)]
ACNPAINT)][2:s,161,(Interest Run For NPA Accounts)][3:c,1,(U)][4:c,1,(N)]

次の形式のデータを取得できるように、文字列を分割する必要があります。

ACHMU (ACH Payment Sys Menus - Online Services)
ACLSICZ (Report for Auto Closure)......

基本的には、「)[2:s、161」の部分と最後の「] [3:c、1、(M)] [4:c、1、(N)]」を削除したいと思います。文字列を分割すると役に立ちますか?次のメソッドはすでに失敗しています。

FileInputStream fs = new FileInputStream(C:/Test.txt);
BufferedReader br  = new BufferedReader(new InputStreamReader(fs));
String str;
while((str = br.readLine()) != null){
    String[] split = str.Split(")[2:s,161,")
} 

ジャンクを途中と最後に入れるのを手伝ってください。

4

4 に答える 4

3

簡単な方法として、 and を使用substring()indexOf()ます。

String oldString = "ACHMU)][2:s,161,(ACH Payment Sys Menus - Online Services)][3:c,1,(M)][4:c,1,(N)]";
String firstPart = oldString.substring(0, oldString.indexOf(")")); // ACHMU
String secondPart = oldString.substring(oldString.indexOf("(")); // (ACH Payment Sys Menus - Online Services)][3:c,1,(M)]
String newString = firstPart + " " + secondPart.substring(0, secondPart.indexOf(")") + 1); // ACHMU (ACH Payment Sys Menus - Online Services)
System.out.print(newString);

出力:

ACHMU (ACH Payment Sys Menus - オンライン サービス)

于 2012-07-05T11:47:04.033 に答える
2

使用できます

str.replaceFirst("(.*?)\\)\\].*?(\\(.*?\\))\\].*", "$1 $2");
于 2012-07-05T11:45:34.517 に答える
2
FileInputStream fs = new FileInputStream(C:/Test.txt);
BufferedReader br  = new BufferedReader(new InputStreamReader(fs));
String str;
String newStr;
String completeNewStr="";
while((str = br.readLine()) != null)
{
    newStr = str.replace(")][2:s,161,"," ");
    newStr = str.replace("][3:c,1,(M)][4:c,1,(N)]","");
    completeNewStr+=newStr;
}

// completeNewStr is your final string
于 2012-07-05T11:52:00.083 に答える
1

置換する文字列が常に "[2:s,161," である場合は、許容できる場合は空の文字列またはスペースに置き換えます。他の文字列についても同様です。

str.replace("[2:s,161,", '');
于 2012-07-05T11:51:21.887 に答える