字符串的操作是写代码的基础,这里很重要多看看
package java11to20; public class D19_MyString { public static final int max = 20; int length; char[] data; public static void main(String[] args) { D19_MyString firstStr = new D19_MyString("I love you forever."); D19_MyString secondStr = new D19_MyString("you"); int position = firstStr.locate(secondStr); System.out.println(String.format("%s 字段是在 %s 的第%s个位置", secondStr, firstStr, position)); D19_MyString thirdStr = new D19_MyString("ki"); position = firstStr.locate(thirdStr); System.out.println(String.format("%s 字段是在 %s 的第%s个位置", secondStr, firstStr, position)); thirdStr = firstStr.substring(1, 4); System.out.println(String.format("所截取的字段是:%s", thirdStr)); thirdStr = firstStr.substring(11, 8); System.out.println(String.format("所截取的字段是:%s", thirdStr)); } public D19_MyString() { length = 0; data = new char[max]; } public D19_MyString(String par) { data = new char[max]; length = par.length(); for (int i = 0; i < length; i++) { data[i] = par.charAt(i); } } public String toString() { String result = ""; for (int i = 0; i < length; i++) { result += data[i]; } return result; } public int locate(D19_MyString myString) { boolean match = false; for (int i = 0; i < length - myString.length + 1; i++) { match = true; for (int j = 0; j < myString.length; j++) { if (data[i + j] != myString.data[j]) { match = false; break; } } if (match) { return i; } } return -1; } public D19_MyString substring(int startPosition, int parlength) { if (startPosition + parlength > max) { System.out.println("溢出"); return null; } D19_MyString result = new D19_MyString(); result.length = parlength; for (int i = 0; i < parlength; i++) { result.data[i] = data[startPosition + i]; } return result; } }
输出结果:
you 字段是在 I love you forever. 的第7个位置 you 字段是在 I love you forever. 的第-1个位置 所截取的字段是: lov 所截取的字段是:forever.