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

  • Cómo encubrir el tiempo que tarda la respuesta a venir desde el servidor en android sin mostrar la pantalla en negro?
  • Conectado un dispositivo móvil (Android) como MTP, ahora podemos acceder a este dispositivo y obtener tiempo
  • Android: Java: La descontinuación de SlidingDrawer
  • ¿Por qué usar Enums en lugar de Constantes?
  • Android, cuando debo usar syncronized en un hilo
  • ¿Es esta Runnable a salvo de fugas de memoria?
  • Utilizar Glide para cargar mapa de bits en ImageView
  • No se pueden leer las líneas de un archivo de texto
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.