Java: 作为 split 字符串的字符?

我试图搜索互联网来解决这个问题,但我没有找到任何东西。

我写了以下抽象代码来解释我要问的内容:


String text = "how are you?";

String[] textArray= text.splitByNumber/4/; //this method is what I'm asking
textArray[0]; //it contains "how "
textArray[1]; //it contains "are "
textArray[2]; //it contains "you?"


方法 splitByNumber 打破字符串 "text" 在 4 象征。 如何创建此方法?

非常感谢
已邀请:

小姐请别说爱

赞同来自:

我想他想要一个字符串 split 在尺寸的基板上 4. 然后我会在循环中做到:


List<string> strings = new ArrayList<string>//;
int index = 0;
while /index &lt; text.length/// {
strings.add/text.substring/index, Math.min/index + 4,text.length/////;
index += 4;
}


</string></string>

喜特乐

赞同来自:

使用
http://google.github.io/guava/ ... -int-
:


Iterable<string> result = Splitter.fixedLength/4/.split/"how are you?"/;
String[] parts = Iterables.toArray/result, String.class/;


</string>

莫问

赞同来自:

正常表达怎么样?


public static String[] splitByNumber/String str, int size/ {
return /size<1 || str==null/ ? null : str.split/"/?<=\\G.{"+size+"}/"/;
}


看到字符串
https://coderoad.ru/3760152/

小姐请别说爱

赞同来自:

使用简单的基元 java 和周期。


private static String[] splitByNumber/String text, int number/ {

int inLength = text.length//;
int arLength = inLength / number;
int left=inLength%number;
if/left>0/{++arLength;}
String ar[] = new String[arLength];
String tempText=text;
for /int x = 0; x < arLength; ++x/ {

if/tempText.length//>number/{
ar[x]=tempText.substring/0, number/;
tempText=tempText.substring/number/;
}else{
ar[x]=tempText;
}

}


return ar;
}


使用:
String ar[]=splitByNumber/"nalaka", 2/;

二哥

赞同来自:

试试吧


String text = "how are you?";
String array[] = text.split/" "/;


或者您可以在下面使用它


List<string> list= new ArrayList<string>//;
int index = 0;
while /index<text.length ;="" <="" code]="" div="" index="index+4;" index+4,text.length="" index,="" list.add="" math.min="" text.substring="" {="" }[="">
<div class="answer_text">
快速黑客


[code]private String[] splitByNumber/String s, int size/ {
if/s == null || size &lt;= 0/
return null;
int chunks = s.length// / size + //s.length// % size &gt; 0/ ? 1 : 0/;
String[] arr = new String[chunks];
for/int i = 0, j = 0, l = s.length//; i &lt; l; i += size, j++/
arr[j] = s.substring/i, Math.min/l, i + size//;
return arr;
}


</div>
<div class="answer_text">
我不认为有一个解决方案 out-of-the-box, 但我会做这样的事情:


private String[] splitByNumber/String s, int chunkSize/{
int chunkCount = /s.length// / chunkSize/ + /s.length// % chunkSize == 0 ? 0 : 1/;
String[] returnVal = new String[chunkCount];
for/int i=0;i<chunkcount;i++ *chunksize-1,="" 4="" ;="" ;[="" <="" [code]string[]="" code]="" div="" edit:="" i+1="" math.min="" return="" returnval;="" returnval[i]="s.substring/i*chunkSize," s.length="" textarray="splitByNumber/text," {="" }="" }[="" 使用将是:="" 实际上,子字段不应超过串的长度。="">
<div class="answer_text">
这是我可以提出的最简单的解决方案..尝试它


[code]public static String[] splitString/String str/ {
if/str == null/ return null;

List<string> list = new ArrayList<string>//;
for/int i=0;i &lt; str.length//;i=i+4/{
int endindex = Math.min/i+4,str.length///;
list.add/str.substring/i, endindex//;
}
return list.toArray/new String[list.size//]/;
}


</string></string></div>
<div class="answer_text">
以下是使用流程的简要实现 Java8:


String text = "how are you?";
final AtomicInteger counter = new AtomicInteger/0/;
Collection<string> strings = text.chars//
.mapToObj/i -&gt; String.valueOf//char/i/ /
.collect/Collectors.groupingBy/it -&gt; counter.getAndIncrement// / 4
,Collectors.joining////
.values//;


出口:


[how , are , you?]


</string></div>
<div class="answer_text">
尝试这个决定,


public static String[]chunkStringByLength/String inputString, int numOfChar/ {
if /inputString == null || numOfChar &lt;= 0/
return null;
else if /inputString.length// == numOfChar/
return new String[]{
inputString
};

int chunkLen = /int/Math.ceil/inputString.length// / numOfChar/;
String[]chunks = new String[chunkLen + 1];
for /int i = 0; i &lt;= chunkLen; i++/ {
int endLen = numOfChar;
if /i == chunkLen/ {
endLen = inputString.length// % numOfChar;
}
chunks[i] = new String/inputString.getBytes//, i * numOfChar, endLen/;
}

return chunks;
}


</div>
<div class="answer_text">
我的应用程序使用文本转换进行演讲!
这是我的算法 split 在 "dot" 如果字符串长度限制为限制,则组合字符串


String[] text = sentence.split/"\\."/;
ArrayList<string> realText = sentenceSplitterWithCount/text/;


功能 sentenceSplitterWithCount: /我是一个连接线 lf 小于少 100 字符,这取决于你/


private ArrayList<string> sentenceSplitterWithCount/String[] splittedWithDot/{

ArrayList<string> newArticleArray = new ArrayList&lt;&gt;//;
String item = "";
for/String sentence : splittedWithDot/{

item += DataManager.setFirstCharCapitalize/sentence/+".";

if/item.length// &gt; 100/{
newArticleArray.add/item/;
item = "";
}

}

for /String a : newArticleArray/{
Log.d/"tts", a/;

}

return newArticleArray;
}


功能 setFirstCharCapitalize 只是标题第一个字母:我认为你仍然不需要它


public static String setFirstCharCapitalize/String input/ {


if/input.length//&gt;2/ {
String k = checkStringStartWithSpace/input/;
input = k.substring/0, 1/.toUpperCase// + k.substring/1/.toLowerCase//;
}

return input;
}


</string></string></string></div>
</chunkcount;i++></div></text.length></string></string>

喜特乐

赞同来自:

快速黑客


private String[] splitByNumber/String s, int size/ {
if/s == null || size <= 0/
return null;
int chunks = s.length// / size + //s.length// % size > 0/ ? 1 : 0/;
String[] arr = new String[chunks];
for/int i = 0, j = 0, l = s.length//; i < l; i += size, j++/
arr[j] = s.substring/i, Math.min/l, i + size//;
return arr;
}

奔跑吧少年

赞同来自:

我不认为有一个解决方案 out-of-the-box, 但我会做这样的事情:


private String[] splitByNumber/String s, int chunkSize/{
int chunkCount = /s.length// / chunkSize/ + /s.length// % chunkSize == 0 ? 0 : 1/;
String[] returnVal = new String[chunkCount];
for/int i=0;i<chunkcount;i++ *chunksize-1,="" 4="" ;="" ;[="" <="" [code]string[]="" code]="" div="" edit:="" i+1="" math.min="" return="" returnval;="" returnval[i]="s.substring/i*chunkSize," s.length="" textarray="splitByNumber/text," {="" }="" }[="" 使用将是:="" 实际上,子字段不应超过串的长度。="">
<div class="answer_text">
这是我可以提出的最简单的解决方案..尝试它


[code]public static String[] splitString/String str/ {
if/str == null/ return null;

List<string> list = new ArrayList<string>//;
for/int i=0;i &lt; str.length//;i=i+4/{
int endindex = Math.min/i+4,str.length///;
list.add/str.substring/i, endindex//;
}
return list.toArray/new String[list.size//]/;
}


</string></string></div>
<div class="answer_text">
以下是使用流程的简要实现 Java8:


String text = "how are you?";
final AtomicInteger counter = new AtomicInteger/0/;
Collection<string> strings = text.chars//
.mapToObj/i -&gt; String.valueOf//char/i/ /
.collect/Collectors.groupingBy/it -&gt; counter.getAndIncrement// / 4
,Collectors.joining////
.values//;


出口:


[how , are , you?]


</string></div>
<div class="answer_text">
尝试这个决定,


public static String[]chunkStringByLength/String inputString, int numOfChar/ {
if /inputString == null || numOfChar &lt;= 0/
return null;
else if /inputString.length// == numOfChar/
return new String[]{
inputString
};

int chunkLen = /int/Math.ceil/inputString.length// / numOfChar/;
String[]chunks = new String[chunkLen + 1];
for /int i = 0; i &lt;= chunkLen; i++/ {
int endLen = numOfChar;
if /i == chunkLen/ {
endLen = inputString.length// % numOfChar;
}
chunks[i] = new String/inputString.getBytes//, i * numOfChar, endLen/;
}

return chunks;
}


</div>
<div class="answer_text">
我的应用程序使用文本转换进行演讲!
这是我的算法 split 在 "dot" 如果字符串长度限制为限制,则组合字符串


String[] text = sentence.split/"\\."/;
ArrayList<string> realText = sentenceSplitterWithCount/text/;


功能 sentenceSplitterWithCount: /我是一个连接线 lf 小于少 100 字符,这取决于你/


private ArrayList<string> sentenceSplitterWithCount/String[] splittedWithDot/{

ArrayList<string> newArticleArray = new ArrayList&lt;&gt;//;
String item = "";
for/String sentence : splittedWithDot/{

item += DataManager.setFirstCharCapitalize/sentence/+".";

if/item.length// &gt; 100/{
newArticleArray.add/item/;
item = "";
}

}

for /String a : newArticleArray/{
Log.d/"tts", a/;

}

return newArticleArray;
}


功能 setFirstCharCapitalize 只是标题第一个字母:我认为你仍然不需要它


public static String setFirstCharCapitalize/String input/ {


if/input.length//&gt;2/ {
String k = checkStringStartWithSpace/input/;
input = k.substring/0, 1/.toUpperCase// + k.substring/1/.toLowerCase//;
}

return input;
}


</string></string></string></div>
</chunkcount;i++>

八刀丁二

赞同来自:

这是我可以提出的最简单的解决方案..尝试它


public static String[] splitString/String str/ {
if/str == null/ return null;

List<string> list = new ArrayList<string>//;
for/int i=0;i &lt; str.length//;i=i+4/{
int endindex = Math.min/i+4,str.length///;
list.add/str.substring/i, endindex//;
}
return list.toArray/new String[list.size//]/;
}


</string></string>

董宝中

赞同来自:

以下是使用流程的简要实现 Java8:


String text = "how are you?";
final AtomicInteger counter = new AtomicInteger/0/;
Collection<string> strings = text.chars//
.mapToObj/i -&gt; String.valueOf//char/i/ /
.collect/Collectors.groupingBy/it -&gt; counter.getAndIncrement// / 4
,Collectors.joining////
.values//;


出口:


[how , are , you?]


</string>

诸葛浮云

赞同来自:

尝试这个决定,


public static String[]chunkStringByLength/String inputString, int numOfChar/ {
if /inputString == null || numOfChar <= 0/
return null;
else if /inputString.length// == numOfChar/
return new String[]{
inputString
};

int chunkLen = /int/Math.ceil/inputString.length// / numOfChar/;
String[]chunks = new String[chunkLen + 1];
for /int i = 0; i <= chunkLen; i++/ {
int endLen = numOfChar;
if /i == chunkLen/ {
endLen = inputString.length// % numOfChar;
}
chunks[i] = new String/inputString.getBytes//, i * numOfChar, endLen/;
}

return chunks;
}

冰洋

赞同来自:

我的应用程序使用文本转换进行演讲!
这是我的算法 split 在 "dot" 如果字符串长度限制为限制,则组合字符串


String[] text = sentence.split/"\\."/;
ArrayList<string> realText = sentenceSplitterWithCount/text/;


功能 sentenceSplitterWithCount: /我是一个连接线 lf 小于少 100 字符,这取决于你/


private ArrayList<string> sentenceSplitterWithCount/String[] splittedWithDot/{

ArrayList<string> newArticleArray = new ArrayList&lt;&gt;//;
String item = "";
for/String sentence : splittedWithDot/{

item += DataManager.setFirstCharCapitalize/sentence/+".";

if/item.length// &gt; 100/{
newArticleArray.add/item/;
item = "";
}

}

for /String a : newArticleArray/{
Log.d/"tts", a/;

}

return newArticleArray;
}


功能 setFirstCharCapitalize 只是标题第一个字母:我认为你仍然不需要它


public static String setFirstCharCapitalize/String input/ {


if/input.length//&gt;2/ {
String k = checkStringStartWithSpace/input/;
input = k.substring/0, 1/.toUpperCase// + k.substring/1/.toLowerCase//;
}

return input;
}


</string></string></string>

要回复问题请先登录注册