[英]Replace only one specified character from string
我想在每次迭代時從字符串中替換一個字符。 我已經編寫了一些生成以下 output 的代碼:
美東時間
英石
噸
這很好,也是我預期的結果。
但是當我添加輸入:“你好”時,我的 output 發生了變化:
你好
llo
o
如您所見,兩個“l”同時被刪除。 原因如下:
“replace(CharSequence target, CharSequence replacement) 用指定的文字替換序列替換此字符串中與文字目標序列匹配的每個 substring”。
從文檔中可以看出,每個 substring 都被替換了。 字符串class中是否有替代的function? 請注意,我只想使用 String 而不是其他第三方庫。
也許先替換 function 確實實現了這一點? 但是因為它需要正則表達式我不知道如何使用它;(
提前感謝您的幫助!
這是我的代碼:
public static boolean isAnagram(String first, String second){
final int first_len = first.length();
final int second_len = second.length();
if (first_len != second_len){
return false;
}
//String newWord = oldWord.replace(oldChar,newChar)
for (int i = 0; i < first_len; i++) {
char ch = first.charAt(i);
first = first.replace(ch, ' ');
System.out.println(first);
for (int j = 0; j < first_len; j++){
if (second.charAt(j) == ch) {
second = second.replace(second.charAt(j), ' ');
}
}
}
if (first.trim().isEmpty() && second.trim().isEmpty()){
return true;
}
return false;
}
只需使用"Hello".substring(1);
將以一致的方式刪除第一個字母
雖然我確實認為有更好的方法來檢查字符串是否是變位詞,但我認為如果您了解您的想法正確實施的樣子可能會有所幫助。
你的方法不必要地復雜。 您真正需要做的是:
--
public static boolean isAnagram(String first, String second) {
final int first_len = first.length();
final int second_len = second.length();
if (first_len != second_len) {
return false;
}
// If you want your anagram check to be case sensitive, comment out the following 2 lines
first = first.toLowerCase();
second = second.toLowerCase();
for (int i = 0; i < first_len; i++) {
final char ch = first.charAt(i);
second = second.replaceFirst(Pattern.quote(String.valueOf(ch)), "");
}
if (second.trim().isEmpty()) {
return true;
}
return false;
}
因為replaceFirst
方法使用正則表達式作為參數,所以我們使用方法Pattern.quote
來確保傳遞的字符被解釋為文字字符,而不是意外地被解釋為一些特殊的正則表達式字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.