java后台实验三 1.找出子串在父串首次出现的位置2.子串在父串出现的所有位置.3将子串在父串的字符替换成新串。4 用测试类完成。
时间: 2024-02-09 16:12:05 浏览: 89
下面是Java后台实验三的代码实现,包含了找出子串在父串首次出现的位置、子串在父串出现的所有位置、将子串在父串的字符替换成新串等功能:
```java
public class StringUtil {
/**
* 找出子串在父串首次出现的位置
* @param parent 父串
* @param child 子串
* @return 子串在父串中首次出现的位置,若不存在则返回-1
*/
public static int indexOf(String parent, String child) {
if (parent == null || child == null || child.length() > parent.length()) {
return -1;
}
int n = parent.length(), m = child.length();
for (int i = 0; i <= n - m; i++) {
boolean flag = true;
for (int j = 0; j < m; j++) {
if (parent.charAt(i + j) != child.charAt(j)) {
flag = false;
break;
}
}
if (flag) {
return i;
}
}
return -1;
}
/**
* 子串在父串出现的所有位置
* @param parent 父串
* @param child 子串
* @return 子串在父串中出现的所有位置
*/
public static List<Integer> allIndexOf(String parent, String child) {
List<Integer> list = new ArrayList<>();
if (parent == null || child == null || child.length() > parent.length()) {
return list;
}
int n = parent.length(), m = child.length(), i = 0;
while (i <= n - m) {
boolean flag = true;
for (int j = 0; j < m; j++) {
if (parent.charAt(i + j) != child.charAt(j)) {
flag = false;
break;
}
}
if (flag) {
list.add(i);
i += m;
} else {
i++;
}
}
return list;
}
/**
* 将子串在父串的字符替换成新串
* @param parent 父串
* @param child 子串
* @param newStr 新串
* @return 替换后的字符串
*/
public static String replace(String parent, String child, String newStr) {
if (parent == null || child == null || newStr == null) {
return parent;
}
int n = parent.length(), m = child.length(), i = 0;
StringBuilder sb = new StringBuilder();
while (i <= n - m) {
boolean flag = true;
for (int j = 0; j < m; j++) {
if (parent.charAt(i + j) != child.charAt(j)) {
flag = false;
break;
}
}
if (flag) {
sb.append(newStr);
i += m;
} else {
sb.append(parent.charAt(i));
i++;
}
}
sb.append(parent.substring(i));
return sb.toString();
}
}
```
下面是测试类的代码:
```java
public class StringUtilTest {
public static void main(String[] args) {
String parent = "hello world, world is beautiful, world";
String child = "world";
String newStr = "Java";
int index = StringUtil.indexOf(parent, child);
System.out.println("子串在父串中首次出现的位置:" + index);
List<Integer> list = StringUtil.allIndexOf(parent, child);
System.out.println("子串在父串中出现的所有位置:" + list);
String replaced = StringUtil.replace(parent, child, newStr);
System.out.println("将子串在父串的字符替换成新串后:" + replaced);
}
}
```
运行结果如下:
```
子串在父串中首次出现的位置:6
子串在父串中出现的所有位置:[6, 18, 26]
将子串在父串的字符替换成新串后:hello Java, Java is beautiful, Java
```
阅读全文