2016-12-26 45 views
0

這個問題已經解決。我重新安裝了Android工作室,因爲出現了其他問題。替換字符串「> =」通過「<」不起作用


我試圖通過「<」與下面的代碼替換字符串「> =」,結果沒有成功。

String descricao = ">= 0"; 
if (descricao.contains(">=")){ 

     descricao = descricao.replace(">=","<"); 
     listaElementosFiltro.get(i).setDescricao(descricao)}; 

結果我得到的是:

descricao = "><> 0"和不按預期"< 0" ...

+1

'String.replace()'可靠地工作。它不會替代你描述的。你的問題必須在別的地方,無論是當你顯示結果,或者你已經混淆了列表中的元素,或者'setDescricao'做了一些意想不到的事情。你不使用與此相關的HTML,是嗎? – Codo

+0

同意,問題可能與打印部分有關。更多詳細信息將有助於 – auval

回答

-1

這是一個有趣的問題,因爲它是意想不到的特殊字符將其替換干擾。

This會解決這個問題(儘管我沒有測試它)。

String greaterOrEqual = TextUtils.htmlEncode(">="); 
String smaller = TextUtils.htmlEncode("<"); 

String descricao = TextUtils.htmlEncode(">= 0"); 
if (descricao.contains(greaterOrEqual)){ 

     descricao = descricao.replace(greaterOrEqual,smaller); 
     listaElementosFiltro.get(i).setDescricao(Html.fromHtml(descricao))}; 
+0

我懷疑你的解決方案的工作原理。爲什麼要將它轉換爲HTML幫助? FabioFerreiraCS的問題必須出現在他未提到的問題中。 – Codo

+0

@Codo我認爲它應該起作用,因爲「<」將被轉換爲「<」和「>」到「>」,並且所有比較都將在不包含這些特殊字符的字符串上進行。我想他至少應該嘗試一下。 – auval

+0

如果你的代碼有效,那麼帶有'String.replace()'的原始代碼也可以工作。你沒有解釋問題的原因。它當然不是*特殊字符*,因爲'String.replace()'不關心它們。 – Codo

0

真奇怪,我檢查,結果是你想要什麼,反正

  • 嘗試clean and build,然後再運行它

在情況下,它仍然沒有工作的嘗試其中之一:

String descricao = ">= 0"; 
    if (descricao.contains(">=")) { 
     descricao = descricao.replace(">=", "<"); 
     System.out.println(descricao); 
     //listaElementosFiltro.get(i).setDescricao(descricao); 
    } 

    // option 2 
    if(descricao.startsWith(">=")){ 
     descricao= descricao.replace(">=","<"); 
     System.out.println(descricao); 
    } 

    // option 3 
    if(descricao.indexOf(">=") >= 0){ 
     descricao= descricao.replace(">=","<"); 
     System.out.println(descricao); 
    } 

我不知道什麼listaElementosFiltro.get(i).setDescricao(descricao);是,所以,我只是避免它。

相關問題