我有一个输入String到程序,我需要在我的方法中执行此String,但我想在字符串小于或等于20个字符时执行它,所以我想将此String拆分为多个如果字符串超过20个字符,则为字符串 也就是说,输入字符串的字符数为90个字符,然后变为5字符串20 + 20 + 20 + 20 + 10 = 90。
我需要每20个字符字符串和最后一个字符串执行此代码:
try {
enMessage = AES.encrypt(key, message);
sendSMS(contact, enMessage);
} catch (Exception e)
所以它可以使每个20个字符是一条消息。
答案 0 :(得分:1)
答案 1 :(得分:1)
我在本网站上看到的此类代码的最佳示例是:
public class StringSplitter {
/* regex was stolen from other stackoverflow answer*/
public static void main(String[] args) {
for (String str : "123a4567a8sdfsdfsdgasfsdfsdgsdcvsdfdgdfsdf9".split("(?<=\\G.{20})"))
System.out.format("\'%s\'%n", str);
}
}
答案 2 :(得分:0)
试试这个:
ArrayList<String> allstrings = new ArrayList<>();
if(inputstring.length() < 20) {
//no spliting
} else {
//if 90 char than 90/20=4.5
float numberOfspliting = inputstring.length / 20f;
for(int i = 0; i < numberofspliting; i++){
String split = inputstring.substring(i * 20, i * 20 + 20);
allstrings.add(split);
}
//like 4.5-4=0.5
float leftcharacters = numberofspliting - (int)numberofspliting;
String lastsplit = inputstring.substring((int)numberofspliting * 20, (int)numberofspliting * 20 + leftcharacters * 20f);
allstrings.add(lastsplit);
}//end if
答案 3 :(得分:0)
您可以尝试这样做:
package com.me;
import java.util.*;
import java.lang.*;
import java.io.*;
public class Test
{
public static List<String> splitMyString(String textValue, int textSize) {
ArrayList<String> myNewList= new ArrayList<String>((textValue.length() + textSize- 1) / textSize);
for (int start = 0; start < textValue.length(); start += textSize) {
myNewList.add(textValue.substring(start, Math.min(textValue.length(), start + textSize)));
}
System.out.println(myNewList.toString());
return myNewList;
}
public static void main(String[] args) {
Test.splitMyString("1234546512312312312312365", 5);
}
}
<强>输出:强>
成功时间:0.1记忆:[12345,46512,31231,23123, 12365]