Java 向字符串添加执行多个子字符串操作的条件以避免IndexOutfrange异常的最佳实践
我有一根长度不确定的绳子。比如说Java 向字符串添加执行多个子字符串操作的条件以避免IndexOutfrange异常的最佳实践,java,string,substring,Java,String,Substring,我有一根长度不确定的绳子。比如说 下面这根绳子的长度是199。索引从0到198 string str = "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley
下面这根绳子的长度是199。索引从0到198
string str = "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type";
这里我执行子字符串操作来提取内容。看起来像这样
Map<String,String> values = new HashMap<>();
values.put("key1",str.subString(0,20));
values.put("key2",str.subString(20,55));
...
...
values.put("key3",str.subString(172,198));
Map values=newhashmap();
put(“key1”,str.subString(0,20));
put(“键2”,str.subString(20,55));
...
...
value.put(“key3”,str.subString(172198));
和以上代码的工作,因为我知道的长度。但有时,长度对我来说是不确定的。在这些情况下,如何验证内容?具体来说,我应该为每个子字符串使用if条件吗?如果是的话,我应该这样添加吗
if(str.length() >= 20 && str.length < 55) {
values.put("key1",str.subString(0,20));
}
if(str.length() >= 55 && str.length < 70) {
values.put("key2",str.subString(20,55);
}
..
..
if(str.length() >= 198) {
values.put("key3",str.subString(172,197));
}
if(str.length()>=20&&str.length<55){
put(“key1”,str.subString(0,20));
}
如果(str.length()>=55&&str.length<70){
值。put(“键2”,str.subString(20,55);
}
..
..
如果(str.length()>=198){
value.put(“key3”,str.subString(172197));
}
但这里的问题是,字符串长度可能会改变(可能是针对长度不同的字符串数组)有些内容可能不存在。我得到了IndexOutfrange例外条件。那么,你有什么建议?我需要遵循什么好的实践吗?据我所知,你需要这样的东西。我希望这对你有所帮助:
String str=“abcdefghijklmnopqrstuvxyz012456789”;
映射值=新的HashMap();
整数计数=0;
而(str.length()>20){
value.put(“键”+计数,str.substring(0,21));
str=str.substring(21);
计数++;
}
值。put(“键”+计数,str);
编写一个函数来抽象提取值时需要遵循的规则:
void extractValue(Map<String, String> values, String source, String key, int valueStart, int valueEnd) {
if (source.length() >= valueEnd) {
values.put(key, source.substring(valueStart, valueEnd));
}
}
void extractValue(映射值、字符串源、字符串键、int-valueStart、int-valueEnd){
if(source.length()>=valueEnd){
value.put(key,source.substring(valueStart,valueEnd));
}
}
(我不理解您何时可以提取数据的规则,所以这只是一个示例)当然,你需要在子字符串之前检查长度。我不清楚你到底在问什么,或者你有什么问题。如果你想提取的块的大小是固定的,那么你可以在
循环时简单地做这件事,检查长度是否应该大于或等于块大小,然后再执行ming子字符串操作。@MarkrotVeel问题是,我们一直在处理数组中每个索引的字符串。因此,在该字符串上,执行了几个我知道子字符串索引的子字符串操作。但问题是,有时,它会导致StringIndexOutfrange异常,这是因为,有时字符串长度不满足要求这并不能帮助我理解你真正的问题,请提供一个实际证明问题的例子。