我没有找到任何答案.. 如果我有: String s = "How are you"
?
如何将其拆分为两个字符串,第一个字符串包含从0..s.length()/2
,第二个字符串包含从s.length()/2+1..s.length()
?
谢谢!
这样应该就可以了:
String s = "How are you?";
String first = s.substring(0, s.length() / 2); // gives "How ar"
String second = s.substring(s.length() / 2); // gives "e you?"
String.substring(int i)
方法使用一个参数返回从位置 i
开始的子字符串。
String.substring(int i, int j)
方法使用两个参数返回从位置 i
开始到 j-1
结束的子字符串。
(请注意,如果字符串长度为奇数,由于整数除法中的四舍五入,second
比 first
多一个字符。)
String s0 = "How are you?";
String s1 = s0.subString(0, s0.length() / 2);
String s2 = s0.subString(s0.length() / 2);
String first = s.substring(0, s.length() / 2);
String second = s.substring(s.length() / 2);
你是否希望字符串长度为奇数?如果是,那么你需要添加逻辑来正确处理这种情况。
"re you"
和 "e you"
。 - aioobeString s = "How are you?"; String first = s.substring(0, s.length() / 2); String second = s.substring(s.length() / 2);
。 - Ralphpublic static String[] splitInEqualParts(final String s, final int n){
if(s == null){
return null;
}
final int strlen = s.length();
if(strlen < n){
// this could be handled differently
throw new IllegalArgumentException("String too short");
}
final String[] arr = new String[n];
final int tokensize = strlen / n + (strlen % n == 0 ? 0 : 1);
for(int i = 0; i < n; i++){
arr[i] =
s.substring(i * tokensize,
Math.min((i + 1) * tokensize, strlen));
}
return arr;
}
测试代码:
/**
* Didn't use Arrays.toString() because I wanted to have quotes.
*/
private static void printArray(final String[] arr){
System.out.print("[");
boolean first = true;
for(final String item : arr){
if(first) first = false;
else System.out.print(", ");
System.out.print("'" + item + "'");
}
System.out.println("]");
}
public static void main(final String[] args){
printArray(splitInEqualParts("Hound dog", 2));
printArray(splitInEqualParts("Love me tender", 3));
printArray(splitInEqualParts("Jailhouse Rock", 4));
}
输出:
['猎犬', '狗']
['爱', '我', '温柔']
['监狱摇滚']
int cutPos = s.length()/2;
String s1 = s.substring(0, cutPos);
String s2 = s.substring(cutPos, s.length()); //which is essentially the same as
//String s2 = s.substring(cutPos);
s.substring(cutPos + 1, s.length());
,而是使用s.substring(cutPos + 1);
。 - Motjava.lang.String
。Javadoc可以:
public int solution(final String S, final int K) {
int splitCount = -1;
final int count = (int) Stream.of(S.split(" ")).filter(v -> v.length() > K).count();
if (count > 0) {
return splitCount;
}
final List<String> words = Stream.of(S.split(" ")).collect(Collectors.toList());
final List<String> subStrings = new ArrayList<>();
int counter = 0;
for (final String word : words) {
final StringJoiner sj = new StringJoiner(" ");
if (subStrings.size() > 0) {
final String oldString = subStrings.get(counter);
if (oldString.length() + word.length() <= K - 1) {
subStrings.set(counter, sj.add(oldString).add(word).toString());
} else {
counter++;
subStrings.add(counter, sj.add(word).toString());
}
} else {
subStrings.add(sj.add(word).toString());
}
}
subStrings.forEach(
v -> {
System.out.printf("[%s] and length %d\n", v, v.length());
}
);
splitCount = subStrings.size();
return splitCount;
}
公共静态无返回值主函数(final String[] args) {
final MessageSolution messageSolution = new MessageSolution();
final String message = "SMSas5 ABC DECF HIJK1566 SMS POP SUV XMXS MSMS";
final int maxSize = 11;
System.out.println(messageSolution.solution(message, maxSize));
}