我有2個字符串str1和str2,我想建立一個更新的str2與字符不存在於str1內部的內容,而不使用內置的字符串函數。 字符串如下:如何從String2中刪除String1並用剩餘的字符串構建一個新的String2?
String str1="bdf";
String str2="abc gde fhi**";
和輸出應該是這樣的:
"ac ge hi";
我有2個字符串str1和str2,我想建立一個更新的str2與字符不存在於str1內部的內容,而不使用內置的字符串函數。 字符串如下:如何從String2中刪除String1並用剩餘的字符串構建一個新的String2?
String str1="bdf";
String str2="abc gde fhi**";
和輸出應該是這樣的:
"ac ge hi";
我說使用內置的方式從字符串讀取字符的陣列和foreach循環以除去包含的字符。
對於C#這應該是這樣的:
foreach(char c in str1)
{
str2.Replace(c,' ').Trim();
}
當然,你也可以使用索引和str.Remove(),以避免空間...
- 編輯對不起,我剛剛看了你們間沒有不允許使用內置函數 - 但是從字符串中讀取數組不是函數 - 每個字符串都以字符數組的形式保存在內存中 - 所以這應該沒問題,只能改變刪除字符的方式:
String result;
int i=0;
foreach(char c in str2)
{
Bool isincluded = false;
foreach(char c2 in str1)
{
if(c == c2) isincluded = true;
}
if(isincluded == false)
{
result[i] = c;
i++;
}
}
沒有驗證...但我希望它的工作:)
String removeCharsFromString(String fromString, String charsToBeRemoved) {
BitSet charSet = new BitSet();
for (char c : charsToBeRemoved.toCharArray())
charSet.set(c);
StringBuilder outputStr = new StringBuilder();
for (char c : fromString.toCharArray())
if (charSet.get(c) == false)
outputStr.append(c);
return outputStr.toString();
}
謝謝埃米爾,但我不想使用字符串內置功能。例如(toCharArray()),您正在使用上述代碼。謝謝你的好例子 – subodh 2011-05-09 11:27:24
這是完整的例子。這不是你可以得到的最好效果,但是因爲你不能使用特別爲你的問題所做的功能,所以這應該工作得很好:
import java.util.*;
public class Test{
public static void main(String[]args){
String s1 = "abc def ghi"; // Source
String s2 = "behi"; // Chars to delete
StringBuffer buf = new StringBuffer(s1); // Creates buffer (for deleteCharAt() func)
for (int i=0; i<s2.length(); i++){ // For each letter in the delete-string
for (int j=0; j<s1.length(); j++){ // Test each letter in the source string
if (s1.charAt(j)==s2.charAt(i)){ // Chars equal -> delete
buf.deleteCharAt(j);
s1=buf.toString(); // Updates the source string
j--; // Moves back one position (else it would skip one char, due to its deleting)
}
}
}
System.out.println(buf.toString());
}
}
哪種語言?爲什麼不使用內置函數的字符串? – 2011-05-09 06:27:25
,因爲這是一個家庭作業問題 - 他們被要求構建一個算法... – 2011-05-09 06:30:15
您是否允許將字符串轉換爲CharArray?因爲那麼你可以遍歷所有的角色並檢查它是否在陣列中。或者你不允許使用任何String.function? – Matthias 2011-05-09 06:41:31