我想在大約後分割一個字符串。 200個字符或下一個特殊符號:大約100個字符和下一個符號後分割字符串(Java)
字符串格式化爲<data>|...|<data>|
,其中一個<data>
塊的字符數介於30到70個字符之間。
我期望的結果將是一個字符串數組像
<data>|<data>|
<data>|
<data>|<data>|<data>|
其中每行大約是200個字符長。
我的代碼看起來像
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
}
}
結果產生替代(3)的正確量,但總的結果應該是一個字符串數組。
是否有正則表達式(類似於SO Q&A)可以解決這個問題?使用for循環的解決方案也是可以接受的。
便籤:
隨意測試的regex101.com(包括我的嘗試和測試數據)
我得到一個錯誤在第一的println代碼:'str'沒有定義。 – sotix
爲什麼你不把它分成一個特殊的字符,然後重建它。更慢,但更容易做到。 – user3719857
@Sotix:'str'是固定的 – Markus