我正在处理长字符串,并且它们在中间的位置会有一定数量的空格。我知道空格后单词的开头字母的索引是什么,我如何计算java中该索引之前的空格数?谢谢你的时间。
这就是我试图做的事情:
int num = s.indexOf("name");
char t = ' ';
int j = 0;
while(t == ' ') {
t = s.charAt((num - j));
j++;
}
int spaceCount = num - ((num - j) + 1);
String space = "";
for(int i = 0; i < spaceCount; i++) {
space += " ";
}
然后我将空间变量添加到索引“num”。但它似乎没有用。有什么建议吗?
答案 0 :(得分:1)
如果你有两个单词之间有未定义的空格数,那么如何找到第一个单词的结束索引和第二个单词的起始索引并计算这两个数字的差异呢?
答案 1 :(得分:1)
获取给定位置/字符串前的空格数:
int pos = s.indexOf("name");
int spaceCount = 0;
for (int i = pos -1; i >= 0 && s.charAt(i) == ' '; i--) {
spaceCount ++;
}
// number of spaces: spaceCount
答案 2 :(得分:0)
这不是你问题的直接答案,但是你不能改变String
对象的内容,因为它是不可变的(在构造之后不能改变)。
所以为了做到这一点:
String space = "";
for(int i = 0; i < spaceCount; i++) {
space += " ";
}
您需要使用StringBuilder
对象:
StringBuilder sb = new StringBuilder();
for(int i = 0; i < spaceCount; i++) {
sb.append(" ");
}
String space = sb.toString();
正如我所说,这不是你问题的直接答案,而且可能有更有效的解决方案解决手头的问题。所以这只是你开始的事情......
答案 3 :(得分:0)
int i= index;
int spaces = 0;
while(i>0 && string.charAt(i).equals(" ")){
i--;
spaces ++;
}
答案 4 :(得分:0)
快速正则表达式怎么样?这将找到第一组内的所有空格字符,并返回匹配的长度。
Pattern pattern = Pattern.compile(" +");
int count = pattern.matcher(input).group(0).length()