約文字列を分割したいと思います。 200文字または次の特殊記号:約100文字後の文字列を分割して次の記号(Java)
文字列は<data>|...|<data>|
のようにフォーマットされ、1つの<data>
ブロックは30〜70文字の形式です。
私の望ましい結果は、すべての行が約200文字の長さである
<data>|<data>|
<data>|
<data>|<data>|<data>|
のような文字列配列になります。
私のコードは、結果は、代替の正しい量(3)を生成するが、全体的な結果は、文字列配列であるべきである
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.junit.Test;
public class RegexpTest {
@Test
public void testRegexp() throws Exception {
String data = "Symbol Ticker:1466654463000:157.71:TRADE:42|Symbol Ticker:1466654463000:157.71:TRADE:42|Symbol Ticker:1466654463000:157.71:TRADE:42|Symbol Ticker:1466654463000:157.71:TRADE:42|Symbol Ticker:1466654463000:157.71:TRADE:42|Symbol Ticker:1466654463000:157.71:TRADE:42|Symbol Ticker:1466654463000:157.71:TRADE:42|Symbol Ticker:1466654463000:157.71:TRADE:42|Symbol Ticker:1466654463000:157.71:TRADE:42|Symbol Ticker:1466654463000:157.71:TRADE:42|Symbol Ticker:1466654463000:157.71:TRADE:42|Symbol Ticker:1466654463000:157.71:TRADE:42|";
String pat = ".{1,200}(\\d|\\s|\\w|\\.|\\:{1,70})\\|";
String ans = data.replaceAll(pat, "X");
//Pattern regex = Pattern.compile(pat);
//Matcher regexMatcher = regex.matcher(str);
System.out.println(data.length()); //prints 528
System.out.println(ans.length()); //prints 3
}
}
ように見えます。
この問題を処理できる正規表現(SO Q&Aに似ています)がありますか? forループを使用したソリューションも使用できます。
スクラッチパッド:
がregex101.comでテスト気軽に(私の試みとテストデータが含まれます)
書式設定: 'str'が定義されていません。 – sotix
特別な文字を1文字ずつ分割して再構成してみませんか?ゆっくりしますが、やりやすくなります。 – user3719857
@Sotix: 'str'は固定されています – Markus