这是我的代码,它在while.Index超出绑定异常时显示错误。子字符串应该是这样的
- 每个字符串最多50个字符
- 不应该打破任何号码 - 例如“4318,4466,486”是可以接受的但是“4318,4466,48”不是
- 子字符串应始终以一个空格开头,并以逗号“,”
结尾 醇>
有人可以帮我解决这个问题
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);
}
}
}
}
答案 0 :(得分:1)
我在你的代码中做了一些修改。
$(document).ready(function(){
$.ajax({
url: 'http://finance.google.com/finance/info?client=ig&q=AMD',
dataType: 'jsonp',
data: { get_param: 'l' },
success: function(json) {
console.log(json);
}
});
});
<强> Demo 强>
答案 1 :(得分:0)
我不明白这个问题,但我认为你正在寻找这个
public class Snippet {
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";
public static void main(String[] args) {
// TODO Auto-generated method stub
int start=0, end=0;
String[] a=input.split(",");
System.out.println(a);
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]);
if(!(a.length-1==i))
{
System.out.print(",");
}
}
}
}
答案 2 :(得分:0)
while(!(output.charAt(end-1)==','))
{
end--;
}
将其更改为
while(!(output.charAt(end-1)==','))
{
if(end>=1)
end--;
else
break;
}
您不会收到错误,但您可能想要更改其他部分。 此外,您没有具体询问,但请查看此链接。
答案 3 :(得分:0)
public class StringSplitTest
{
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,";
static ArrayList chunks = new ArrayList();
static char comma = ',';
static String commaString = ",";
static boolean more = true;
static int startIndex = 0;
static String str = null;
static int splitIndex = 50;
static int remainingInputLength = 0;
public static void main(String[] args)
{
while (more)
{
str = input.substring(startIndex, startIndex + splitIndex);
if (str.endsWith(commaString))
{
startIndex += 50;
}
else
{
splitIndex = str.lastIndexOf(comma) + 1;
str = input.substring(startIndex, startIndex + splitIndex);
startIndex += splitIndex;
}
chunks.add(str);
remainingInputLength = input.substring(startIndex).length();
if (remainingInputLength == 0)
{
more = false;
}
else
{
if (remainingInputLength >= 50)
splitIndex = 50;
else
splitIndex = remainingInputLength;
}
}
for (String s: chunks) System.out.println(s);
}
}