字符串a =“sad\n utsad”,字符串b=“dut” 使用java语法,找出b在a中的起始和结束位置的下标,忽略a字符串中的换行和空格
时间: 2024-12-19 18:15:22 浏览: 5
在Java中,你可以通过遍历字符串`a`并逐字符比较的方式来查找字符串`b`在`a`中的起始和结束位置。由于题目要求忽略换行符`\n`和空格,我们需要先对两个字符串进行预处理,去除这些特殊字符。
首先,创建两个辅助函数,一个用于清理字符串,另一个用于找到子串的位置:
```java
public class Main {
public static void main(String[] args) {
String a = "sad\n utsad";
String b = "dut";
// 清理字符串a
String cleanedA = cleanString(a);
// 查找子串b在cleanedA中的位置
int startIndex = findSubstring(cleanedA, b);
if (startIndex != -1) {
int endIndex = startIndex + b.length() - 1;
System.out.println("子串b在a中的起始位置索引:" + startIndex);
System.out.println("子串b在a中的结束位置索引:" + endIndex);
} else {
System.out.println("子串b未在a中找到");
}
}
private static String cleanString(String str) {
return str.replaceAll("\\s+|\n", "");
}
private static int findSubstring(String str, String subStr) {
for (int i = 0; i <= str.length() - subStr.length(); i++) {
if (str.regionMatches(true, i, subStr, 0, subStr.length())) {
return i;
}
}
return -1;
}
}
```
在这个例子中,`cleanString()` 函数使用正则表达式`\\s+|\n`替换掉所有的空格和换行符,而`findSubstring()`函数则从头开始检查清理后的`cleanedA`,寻找子串`b`的存在。如果找到,返回子串的起始索引;如果没有找到,返回-1。
阅读全文