我需要将一个数字分成偶数部分,例如:
32427237需要成为324 272 37
103092501需要成为103 092 501
我相信我可以接下来的数字,但我确信有一种更有效的方式,因为我不想错过这些数字中的字符 - 数字本身可以是任意长度所以如果数字是1234567890我希望它分成这些部分123 456 789 0
我已经看过其他语言的例子,比如Python等,但我不太了解它们将它们转换为C# - 循环通过字符然后在第三个获取前一个然后该索引来获取字符串的部分可能做好这份工作,但我愿意接受如何更好地完成这项工作的建议.
我目前正在开发一个Android应用程序,它使用'JSON'作为服务器的响应.通常我会处理JSON响应.但是现在我遇到了logcat的问题,如果JSON响应字符串非常长,超过x个字符(我不知道logcat可以显示的最大字符串到底有多少),一些JSON字符串丢失了.
虽然它仍然可以给我输出,但我需要有关从服务器传输的JSON字符串的信息.
是否有可能在logcat上显示更多字符串?就像增加缓冲区或任何可以用来增加logcat可以显示的最大字符串长度的参数一样.
我使用这个正则表达式在每个第三个位置分割一个字符串:
String []thisCombo2 = thisCombo.split("(?<=\\G...)");
Run Code Online (Sandbox Code Playgroud)
其中G之后的3个点表示要分割的每个第n个位置.在这种情况下,3个点表示每3个位置.一个例子:
Input: String st = "123124125134135145234235245"
Output: 123 124 125 134 135 145 234 235 245.
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何让用户控制必须拆分字符串的位置数?换句话说,如何制作用户控制的3个点,n个点?
我在Scala中寻找一种优雅的方式将给定的字符串拆分为固定大小的子串(序列中的最后一个字符串可能更短).
所以
split("Thequickbrownfoxjumps", 4)
Run Code Online (Sandbox Code Playgroud)
应该屈服
["Theq","uick","brow","nfox","jump","s"]
Run Code Online (Sandbox Code Playgroud)
当然,我可以简单地使用一个循环,但必须有一个更优雅(功能样式)的解决方案.
我试图在网上搜索解决这个问题,但我没有找到任何东西.
我写了以下抽象代码来解释我在问什么:
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?"
Run Code Online (Sandbox Code Playgroud)
splitByNumber方法每4个字符拆分字符串"text".我怎么能创建这个方法?
非常感谢
目前我有一个大小为N的数组.我正在尝试从数组中复制每个X字节数.
例如,如果数组大小为10,我想要大小为3的数组.我将复制前3个元素,然后复制下3个元素和最后1个元素.
目前我正在使用以下算法:
int I = 0;
int sub = bytes.length;
int counter = 0;
for (I = 0; I < bytes.length; ++I) {
if (I % 3 == 0 && I != 0) {
NewArray[counter] = Arrays.copyOfRange(bytes, I - 3, I));
sub -= 3;
++counter;
}
}
NewArray[counter] = Arrays.copyOfRange(bytes, I - sub, I)); //Copy remainder.
Run Code Online (Sandbox Code Playgroud)
有没有更有效或更体面的方式来做我想要的?这个算法看起来很糟糕= l
我有什么想法可以改进它或者至少提示一下吗?
如何在保持字边界的同时将字符串拆分为最大字符长度的相等部分?
比方说,例如,如果我想将一个字符串"hello world"拆分为最多7个字符的相等子串,它应该返回给我
"hello "
Run Code Online (Sandbox Code Playgroud)
和
"world"
Run Code Online (Sandbox Code Playgroud)
但我目前的实施回归
"hello w"
Run Code Online (Sandbox Code Playgroud)
和
"orld "
Run Code Online (Sandbox Code Playgroud)
我使用以下代码从Split字符串中取代Java中相等长度的子字符串,将输入字符串拆分为相等的部分
public static List<String> splitEqually(String text, int size) {
// Give the list the right capacity to start with. You could use an array
// instead if you wanted.
List<String> ret = new ArrayList<String>((text.length() + size - 1) / size);
for (int start = 0; start < text.length(); start += size) {
ret.add(text.substring(start, Math.min(text.length(), start + size)));
}
return ret;
}
Run Code Online (Sandbox Code Playgroud)
在将字符串拆分为子字符串时是否可以保持字边界?
更具体地说,我需要字符串拆分算法来考虑空格提供的单词边界,而不是仅仅在分割字符串时依赖字符长度,尽管这也需要考虑但更像是字符的最大范围而不是一个硬编码的字符长度.
我喜欢用Java编写代码高尔夫(即使Java方式太冗长而不具竞争力),它正在以尽可能少的字节完成一定的挑战.在我的一个答案中,我有以下代码:
for(var p:"A4;B8;CU;EM;EW;E3;G6;G9;I1;L7;NZ;O0;R2;S5".split(";"))
Run Code Online (Sandbox Code Playgroud)
在我们将它转换为带有的字符串数组后,它基本上遍历2-char字符串.split.有人建议我可以把它打到这个而不是节省4个字节:
for(var p:"A4B8CUEMEWE3G6G9I1L7NZO0R2S5".split("(?<=\\G..)"))
Run Code Online (Sandbox Code Playgroud)
功能仍然相同.它循环遍历2个字符串.
但是,我们都没有100%确定这是如何工作的,因此这个问题.
我知道的:
我知道.split("(?<= ... )")用于拆分,但保留尾随分隔符.
还有一种方法可以将前导分隔符或分隔符保留为分隔项:
"a;b;c;d".split("(?<=;)") // Results in ["a;", "b;", "c;", "d"]
"a;b;c;d".split("(?=;)") // Results in ["a", ";b", ";c", ";d"]
"a;b;c;d".split("((?<=;)|(?=;))") // Results in ["a", ";", "b", ";", "c", ";", "d"]
Run Code Online (Sandbox Code Playgroud)
我知道\G用来在遇到不匹配后停止.
编辑:\G用于指示最后一个匹配结束的位置(或第一次运行的字符串的开头).修正了@SebastianProske的定义.
int count = 0;
java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("match,");
java.util.regex.Matcher matcher = pattern.matcher("match,match,match,blabla,match,match,");
while(matcher.find())
count++;
System.out.println(count); // Results in 5
count = 0;
pattern = java.util.regex.Pattern.compile("\\Gmatch,");
matcher = …Run Code Online (Sandbox Code Playgroud) 可能重复:
在Java中将字符串拆分为相等长度的子字符串
鉴于以下实用方法,我有:
/**
* Splits string <tt>s</tt> into chunks of size <tt>chunkSize</tt>
*
* @param s the string to split; must not be null
* @param chunkSize number of chars in each chuck; must be greater than 0
* @return The original string in chunks
*/
public static List<String> splitInChunks(String s, int chunkSize) {
Preconditions.checkArgument(chunkSize > 0);
List<String> result = Lists.newArrayList();
int length = s.length();
for (int i = 0; i < length; i += chunkSize) {
result.add(s.substring(i, Math.min(length, …Run Code Online (Sandbox Code Playgroud) 当长度为 35 时,我想拆分像“仅卢比 241 和 68 卢比”这样的字符串,我想将此字符串拆分为 2。我尝试使用此代码拆分字符串。
String text = "Rupees Two Hundred Forty One and Sixty Eight only";
List<String> parts = new ArrayList<>();
int length = text.length();
for (int i = 0; i < length; i += 35) {
parts.add(text.substring(i, Math.min(length, i + size)));
Run Code Online (Sandbox Code Playgroud)
但输出是这样的。
[Rupees Two Hundred Forty One and Si, xty Eight only]
但我想像这样拆分字符串。
[Rupees Two Hundred Forty One and, Sixty Eight only]
分割字符串时没有切词。字符串根据账单金额每次都不同。