2014-09-24 124 views
1

我已經看到要將「,」替換爲「。」。通過使用「。$」|「,$」,但這種邏輯不適用於字母表。 我需要一個單詞的最後一個字母替換到字符串包含EXAMPLE_TEST用java 這是我的代碼如何使用正則表達式將最後一個字母替換爲java中的另一個字母

Pattern replace = Pattern.compile("n$");//here got the real problem 
    matcher2 = replace.matcher(EXAMPLE_TEST); 
    EXAMPLE_TEST=matcher2.replaceAll("k"); 

我也嘗試「// n $的」,另一封信中所有的單詞「\ n $」等 請幫助我獲得解決方案 輸入文本=> njan艾曼 輸出文本=> njak aymak

+0

輸入中最後沒有字母'n'。你的投入和預期產出是什麼? – 2014-09-24 06:02:13

+0

您應該提供一個示例輸入/輸出和預期輸出。你的表達方式是:「一個單詞的最後一個字母替換另一個單詞中的所有單詞」這聽起來是你想要替換任何後跟一個空格的字母:'(\ w)(?= \ s)' – alfasin 2014-09-24 06:04:33

+0

String EXAMPLE_TEST =「njan ayman」;它包含ñ – Ayman 2014-09-24 06:05:22

回答

2

您可以使用前瞻和組匹配:

String EXAMPLE_TEST = "njan ayman"; 
    s = EXAMPLE_TEST.replaceAll("(n)(?=\\s|$)", "k"); 
    System.out.println("s = " + s); // prints: s = njak aymak 

說明:

(n) - the matched word character 
(?=\\s|$) - which is followed by a space or at the end of the line (lookahead) 

上面僅是一個實例!如果你想切換以期每逗號中間行應改爲:

s = s.replaceAll("(,)(?=\\s|$)", "\\."); 
+0

@AvinashRaj沒關係,'n'只是一個例子,OP說他試着用逗號切換一段時間,這意味着他必須使用:'s = s.replaceAll(「(,)( ?= \\ s | $)「,」\\。「);' – alfasin 2014-09-24 06:21:24

+0

當然不是。同樣,上面的代碼就是一個例子,OP將不得不按照他想要的方式在匹配的組中切換表達式:它可以是「(,)」,「(n)」,「(\\ w)」或其他。 – alfasin 2014-09-24 06:23:51

+0

假設我怎麼能找到間距之前n,實際上我正在努力使英語馬拉雅拉姆語transilitration – Ayman 2014-09-24 06:34:18

2

相反串$錨年底,使用word boundary \b

String s = "njan ayman"; 
s = s.replaceAll("n\\b", "k"); 
System.out.println(s); //=> "njak aymak" 
+0

感謝這項工作 – Ayman 2014-09-24 06:17:04

0

下面是我設置達:

(?=.\b)\w

這在Java中需要被轉義爲以下幾點:

(?=.\\b)\\w

它轉換爲類似 「後一個字符(\ w)的(?=)任何單個字符(。)在一個字的末尾(\ B)」。

String s = "njan ayman aowkdwo wdonwan. wadawd,.. wadwdawd;"; 
s = s.replaceAll("(?=.\\b)\\w", ""); 
System.out.println(s); //nja ayma aowkdw wdonwa. wadaw,.. wadwdaw; 

這將刪除所有單詞的最後一個字符,但會留下非字母數字字符。您只能通過將.更改爲其他內容來指定要刪除/替換的特定字符。

但是,其他答案是非常好的,可能會達到你正在尋找的。

+0

這也工作:-) – Ayman 2014-09-24 06:53:31

-1
if (word.endsWith("char oldletter")) { 
    name = name.substring(0, name.length() - 1 "char newletter"); 
} 
+0

這將甚至編譯? – Pang 2015-11-12 06:17:21

相關問題