2017-06-16 45 views
-3

我在尋找是否有人將文本行分割爲空白區域中的大小不等的塊。具體來說,我正在構建一個函數,它需要一個字符串和數量的塊。目標是分割的每一行都有相同數量的字符,或儘可能接近(所有行之間的字符增量儘可能接近0)。例如,如果字符串是:Java:將文本拆分爲均勻大小的塊(空白區域)

文本=「Lorem存有悲坐阿梅德,consectetur adipiscing ELIT前庭augue SAPIEN,VARIUS獅子座VEL,tincidunt lobortis存有Vivamus前lectus,efficitur NEC LOREM ID,elementum volutpat自由人。 「。

chunksSize = 2,將是:

1行:Lorem存有悲坐阿梅德,consectetur adipiscing ELIT。 Vestibulum augue sapien,varius a leo vel

Line 2:tincidunt lobortis ipsum。 Vivamus ex lectus,efficitur nec lorem id, elementum volutpat libero。

chunksSize = 3,將是:

1行:Lorem存有悲坐阿梅德,consectetur adipiscing ELIT。 Vestibulum

Line 2:augue sapien,varius a leo vel,tincidunt lobortis ipsum。 Vivamus

第3行:exctus,efficiturion lorem id,elementum volutpat libero。

CHUNKSIZE = 4,將是:

1行:Lorem存有悲坐阿梅特,consectetur adipiscing

第2行:ELIT。 Vestibulum augue sapien,varius a leo vel,

Line 3:tincidunt lobortis ipsum。 Vivamus ex lectus,

第4行:有效的文件編號,elementum volutpat libero。

這些分割可能並不完全準確,因爲我是通過眼睛做的。任何人都想在Java中嘗試一下這一點?

+0

使用'substring(int beginIndex,int endIndex)'方法將String類拆分成塊。 –

+0

雖然我試圖在空白處分割這個,但不是中間詞。 – cdubbs

回答

0
int noChunks = 3;//get this from user 
String line = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum augue sapien, varius a leo vel, tincidunt lobortis ipsum. Vivamus ex lectus, efficitur nec lorem id, elementum volutpat libero."; 

String []arr = line.split(" "); 

int chunkSize = arr.length/noChunks; 

List<String> chunks = new ArrayList<String>(); 

int index = 0; 

for(int i=0;i<noChunks;i++){ 
    StringBuilder builder = new StringBuilder(); 
    for(int x = 0;x<chunkSize;x++){ 
     builder.append(arr[index]+" "); 
     index++; 
    } 
    chunks.add(builder.toString()); 
} 
+0

謝謝Ankit - 我做了一個更正,將StringBuilder聲明移動到外部for循環中,否則所有的塊都會添加。話雖這麼說,難度在這裏是,如果其中一條線路中有一個很長的單詞,例如: 線路1:「Lorem存有悲坐阿梅德,consectetursssssssssssssssssssssssssssss adipiscing ELIT前庭。」 線路2:「augue SAPIEN,雜色山雀一個leo vel,tincidunt lobortis ipsum。「 第3行:「Vivamus ex lectus,efficititore lorem id,elementum volutpat」在這種情況下,行不會均勻分佈。 – cdubbs

+0

而不是使用字數,使用字符數。追加單詞直到達到(超過)line.length/noChunks,然後進入下一個項目。這樣你也可以消除最後遺漏字的問題。 – tevemadar

+0

@cdubbs從你的問題看來,你想在白色空間分裂,即每個塊應該有相等的號碼。的話。這個用例的長度不應該是一個問題。 tevemadar說你可以做一個角色數。如果您認爲自己有答案,請將其標爲正確。 – Max08