gpt4 book ai didi

java - 如何在 java 中使用特定规则对给定字符串进行子字符串化

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:50:51 26 4
gpt4 key购买 nike

这是我的代码,它在 while.Index out of bound 异常时显示错误。子字符串应该是这样的

  1. Max 50 characters per string
  2. No number should be broken - for example " 4318, 4466, 486," is acceptable but " 4318, 4466, 48" is not
  3. Substring should always start with one space and end with comma ","

谁能帮我解决这个问题

 public class MyString {

/**
* @param args

*/
static String input = " 4318, 4466, 486, 1698, 478, 590, 582, 1594, 486, 1690, 702, 378, 486, 586, 486, 1694, 486, 598, 538, 526, 486, 1694, 486, 622, 434, 630, 462, 1730, 422, 1754, 450, 586, 486, 1690, 498, 1682, 486, 586, 502, 606, 454, 1698, 478, 1694, 486, 1718, 458, 1686, 726, 1458, 646, 426, 486, 1694, 482, 1694, 486, 590, 482, 622, 490, 550, 490, 602, 450, 634, 466, 586, 486, 1730, 426, 1714, 494, 622, 446, 590, 494, 618, 450, 586, 490, 586, 486, 1730, 450, 586, 486, 590, 502, 1674, 530, 1650, 482, 1690, 558, 1622, 486, 1690, 486, 5298, 4306, 4466, 530, 1646, 486, 594, 650, 1502, 546, 1650, 490, 586, 486, 622, 522, 1622, 486, 602, 454, 634, 462, 1694, 482, 590, 486, 590, 486, 1694, 482, 1730, 450, 590, 498, 1638, 526, 1690, 498, 606, 458, 586, 486, 1698, 482, 1694, 482, 1690, 486, 1694, 486, 1698, 574, 494, 486, 1714, 462, 1690, 486, 626, 430, 610, 486, 590, 490, 622, 426, 610, 498, 618, 446, 1690, 486, 1734, 446, 590, 482, 590, 502, 606, 454, 590, 502, 582, 478, 1690, 486, 586, 506, 578, 482, 1686, 558, 1622, 674, 1506, 482, 1698, 590, 1606, 462, 1000";
char space=' ';
static char comma=',';
public static void main(String[] args) {
// TODO Auto-generated method stub
int start=0, end=0;
while (end-1 < input.length()){

start=end;
end= start+ 50;

String output= input.substring(start,end);
if(output.charAt(start)==' ' && output.charAt(end-1)==',')
{
System.out.println(output);
}
else
{

while(!(output.charAt(end-1)==','))
{

end--;

}
output= input.substring(start,end);
System.out.println(output);

}
}
}



}

最佳答案

我对您的代码进行了细微的修改。

class Ideone {

static String input = " 4318, 4466, 486, 1698, 478, 590, 582, 1594, 486, 1690, 702, 378, 486, 586, 486, 1694, 486, 598, 538, 526, 486, 1694, 486, 622, 434, 630, 462, 1730, 422, 1754, 450, 586, 486, 1690, 498, 1682, 486, 586, 502, 606, 454, 1698, 478, 1694, 486, 1718, 458, 1686, 726, 1458, 646, 426, 486, 1694, 482, 1694, 486, 590, 482, 622, 490, 550, 490, 602, 450, 634, 466, 586, 486, 1730, 426, 1714, 494, 622, 446, 590, 494, 618, 450, 586, 490, 586, 486, 1730, 450, 586, 486, 590, 502, 1674, 530, 1650, 482, 1690, 558, 1622, 486, 1690, 486, 5298, 4306, 4466, 530, 1646, 486, 594, 650, 1502, 546, 1650, 490, 586, 486, 622, 522, 1622, 486, 602, 454, 634, 462, 1694, 482, 590, 486, 590, 486, 1694, 482, 1730, 450, 590, 498, 1638, 526, 1690, 498, 606, 458, 586, 486, 1698, 482, 1694, 482, 1690, 486, 1694, 486, 1698, 574, 494, 486, 1714, 462, 1690, 486, 626, 430, 610, 486, 590, 490, 622, 426, 610, 498, 618, 446, 1690, 486, 1734, 446, 590, 482, 590, 502, 606, 454, 590, 502, 582, 478, 1690, 486, 586, 506, 578, 482, 1686, 558, 1622, 674, 1506, 482, 1698, 590, 1606, 462, 1000";
char space = ' ';
static char comma = ',';

public static void main(String[] args) {
// TODO Auto-generated method stub
int start = 0, end = 0;
int temp = 0;
while (end < input.length()) {

start = end;
end = Math.min(start + 50, input.length());

String output = input.substring(start, end - 1);
if (output.charAt(0) == ' ' && output.charAt(output.length() - 1) == ',') {
System.out.println(output);
end--;
} else {
temp = output.length() - 1;
while (temp!=-1 && output.charAt(temp) != ',') {
temp--;
}
if(temp==-1)break;
output = input.substring(start, start + temp + 1);
System.out.println(output);
end = start + temp + 1;
}

}
}
}

Demo

关于java - 如何在 java 中使用特定规则对给定字符串进行子字符串化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43090066/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com