我正在处理大小不同的字符串,但我知道在开头和结尾总会有相同数量的字符。 e.g。
String i = "id3-jfhd3udj-endid";
String i = "id7-fdl3-endid";
String i = "id1-lkjf348hosjsldf-endid";
是否有一种方法(比如String类中的方法)允许我每次解析字符串,删除前面的字符和后面的字符?
此外,如果字符串包含两个' - '?:
,该怎么办?String i = "id3-t-jfhd3udj-t-endid";
由于
答案 0 :(得分:4)
我知道将会有相同数量的字符 乞讨和结束
只需使用substring(int beginIndex,
int endIndex)
方法:
返回一个新字符串,该字符串是此字符串的子字符串。子串 从指定的beginIndex开始并延伸到at处的字符 index endIndex - 1。
i.substring(4, i.length()-6)
或者,如果您知道所需的部分始终位于两个'-'
之间,则可以使用:
i.substring(i.indexOf('-')+1, i.lastIndexOf('-'))
最后一个解决方案将始终适用于任何字符数 开始和结束,而第一个只适用于您的特定情况。
答案 1 :(得分:1)
您可以使用substring()方法提取所需的字符串。
语法:substring(int startIndex,int endIndex);
int index1= i.indexOf("-");
int index2= i.lastIndexOf("-");
i=i.substring(index1+1,index2);
答案 2 :(得分:1)
然后使用String.substring
方法:
string.substring(string.indexOf("-")+1, string.lastIndexOf("-"))
答案 3 :(得分:0)
如果它总是采用那种确切的格式(使用' - '),那么获取字符串中间部分的最简单[可能不是最有效]方法可能是i.split("-")[1]
。
如果没有,您可以使用i.substring(4, i.length() - 6))
。
答案 4 :(得分:0)
这种方法怎么样
String i = "id1-lkjf348hosjsldf-endid";
System.out.println(i);
if (i.contains("-")) { // check for '-'
i = i.substring(1+i.indexOf('-'), i.lastIndexOf('-')); // first dash to last dash.
}
System.out.println(i);
答案 5 :(得分:0)
如果字符串始终采用<prefix>-<content>-<suffix>
形式(包含两个“-
”),那么您可以尝试:
String content = string.split("-")[1];
答案 6 :(得分:0)
此外,如果字符串包含两个' - '?:
,该怎么办?
String i = "id3-t-jfhd3udj-t-endid";
只要字符串包含偶数个破折号,并且您想要的子字符串位于中间,此代码就可以使用。
public String extractString(String s) {
String[] parts = s.split("-");
return parts[parts.length / 2];
}