Android división con el espacio no funciona para este caso. ¿Por qué?

Tengo que resaltar y hacer url en el texto clicable, dinámicamente.

Para eso, estoy usando el siguiente método

private SpannableString addClickablePart(String string) { string = string.replaceAll("\\n"," \n "); string += " "; SpannableString ss = new SpannableString(string); String[] words = string.split(" "); for (final String word : words) { if (CommonUtilities.isValidURL(word)) { int lastIndex = 0; while(lastIndex != -1){ lastIndex = string.indexOf(word+" ",lastIndex); if(lastIndex != -1){ ClickableSpan clickableSpan = new ClickableSpan() { @Override public void onClick(View textView) { //use word here to make a decision isRefreshingNecessary = false; Intent mIntent = new Intent(ctx, UserWebsiteActivity.class); mIntent.putExtra("website", word); startActivity(mIntent); } }; ss.setSpan(clickableSpan, lastIndex, lastIndex + word.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); lastIndex += word.length(); } } } } return ss; } 

Su funcionamiento para la mayoría de los casos. Pero, no funciona para todos los casos como el siguiente ejemplo.

La información de precios proporcionada a usted en los términos y condiciones del plan sobre estos rangos de números ya no se aplicará y será reemplazada por esta estructura de cargos. Consulte www.ee.co.uk/ukcalling para obtener más información.

Como, para el caso anterior, cuando divido toda la cadena usando

  String[] words = string.split(" "); 

o

  String[] words = string.split("\\s+"); 

Conseguí See www.ee.co.uk/ukcalling for como una sola palabra. En vez de eso, necesito estos 3 – See , www.ee.co.uk/ukcalling y como 3 palabras diferentes, no estar tan agrupados como una sola palabra.

No soy capaz de entender lo que está mal en el camino de la división con el espacio. Por favor, ayúdame a saber.

2 Solutions collect form web for “Android división con el espacio no funciona para este caso. ¿Por qué?”

Reemplace todos los caracteres de espacio en blanco no visibles.

  string = string.replaceAll("\\t", " "); string = string.replaceAll("\\xA0", " "); string = string.replaceAll("\\u1680", " "); string = string.replaceAll("\\u180e", " "); string = string.replaceAll("\\u2000", " "); string = string.replaceAll("\\u200a", " "); string = string.replaceAll("\\u202f", " "); string = string.replaceAll("\\u205f", " "); string = string.replaceAll("\\u3000", " "); 

Para java 8

 string = string.replaceAll("(^\\h*)|(\\h*$)",""); 

Compruebe este cómo-a-trim-no-break-espacio-en-java

Intente esto. Funciona en todos los casos Para mí

  SpannableString ss = new SpannableString("Your String"); ClickableSpan clickableSpan = new ClickableSpan() { @Override public void onClick(View textView) { //Perform Click Here } @Override public void updateDrawState(TextPaint ds) { super.updateDrawState(ds); ds.setUnderlineText(false); } }; ss.setSpan(clickableSpan, pos, last+5, Spanned.SPAN_USER); desc.setText(ss); desc.setMovementMethod(LinkMovementMethod.getInstance()); desc.setHighlightColor(Color.TRANSPARENT); 

Please note desc es mi TextView a quien he establecido String. Gracias.Hope It Helps

  • Visualización del archivo de forma o del archivo OSM en android como mapa
  • Selector de color de Android
  • Android ImageView.setMatrix () y .invalidate () - el repintado toma demasiado tiempo
  • Error al recuperar el padre del elemento: No se encontró ningún recurso que coincida con el nombre dado '@android: style / Theme.AppCompat.Light.DarkActionBar'
  • ¿Puedo procesar anotaciones jaxb en tiempo de compilación?
  • ¿Qué significa 'SRPy' en la documentación de Mockito
  • Cómo evitar la inyección XML como XML Bomba y ataque XXE
  • ¿Cómo se puede conectar un efecto de reverberación a los datos de AudioRecord / PCM y guardarlo en un archivo?
  • Iniciar la aplicación de Android en la pantalla desbloquear
  • Manejo de errores en Volley (con futuros)?
  • Ejecución de scripts de Groovy incrustados en Java en tiempo de ejecución para Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.