【发布时间】:2015-06-24 08:49:17
【问题描述】:
我想将此 RegExp /([^\s])+/g 应用于带有 Linkify 的 TextView 以使每个单词都可点击。
我在 http://regexr.com/ 上测试过,该表达式可以按我的需要工作,但是当我应用到 Linkify 句子时,什么都无法点击。
我尝试做一个简单的String.split(regExp),然后我收到了一个带有整个String 的唯一项目。
我做错了什么?
简单测试
TextView t = (TextView)findViewById(R.id.aa);
t.setText("Con cien cañones por banda, viento en popa a toda vela, no corta el mar, sino vuela, un velero bergantín: bajel pirata que llaman por su bravura el Temido, en todo mar conocido del uno al otro confín. La luna en el mar riela, en la lona gime el viento, y alza en blando movimiento olas de plata y azul; y ve el capitán pirata, cantando alegre en la popa, Asia a un lado, al otro Europa y allá a su frente Stambul. «Navega, velero mío, sin temor, que ni enemigo navío, ni tormenta, ni bonanza, tu rumbo a torcer alcanza, ni a sujetar tu valor. «Veinte presas hemos hecho a despecho del inglés, y han rendido sus pendones cien naciones a mis pies. «¿Qué es mi barco? Mi tesoro. ¿Qué es mi Dios? La libertad. ¿Mi ley? ¡La fuerza y el viento! ¿Mi única patria? ¡La mar! «Allá muevan feroz guerra ciegos reyes por un palmo más de tierra: que yo tengo aquí por mío cuanto abarca el mar bravío, a quien nadie impuso leyes. «Y no hay playa sea cual quiera, ni bandera de esplendor, que no sienta mi derecho y dé pecho a mi valor. «¿Qué es mi barco? Mi tesoro. ¿Qué es mi Dios? La libertad. ¿Mi ley? ¡La fuerza y el viento! ¿Mi única patria? ¡La mar! «A la voz de «¡barco viene!» Es de ver cómo vira y se previene a todo trapo a escapar: que yo soy el rey del mar, y mi furia es de temer. «En las presas yo divido lo cogido por igual: sólo quiero por riqueza la belleza sin rival. «¿Qué es mi barco? Mi tesoro. ¿Qué es mi Dios? La libertad. ¿Mi ley? ¡La fuerza y el viento! ¿Mi única patria? ¡La mar! «¡Sentenciado estoy a muerte! Yo me río: no me abandone la suerte, y al mismo que me condena, colgaré de alguna antena, quizá en su propio navío. «Y si caigo, ¿qué es la vida? Por perdida ya la di cuando el yugo del esclavo, como un bravo, sacudí. «¿Qué es mi barco? Mi tesoro. ¿Qué es mi Dios? La libertad. ¿Mi ley? ¡La fuerza y el viento! ¿Mi única patria? ¡La mar! «Son mi música mejor aquilones; el estrépito y temblor de los cables sacudidos, del negro mar los bramidos y el rugir de mis cañones. «Y del trueno al son violento, y del viento al rebramar, yo me duermo sosegado. Arrullado por el mar. «¿Qué es mi barco? Mi tesoro. ¿Qué es mi Dios? La libertad. ¿Mi ley? ¡La fuerza y el viento! ¿Mi única patria? ¡La mar!");
String[] ss = t.getText().toString().split("/([^\\s])+/g");
链接代码
...
TextView t = (TextView)findViewById(R.id.aa);
t.setText("Con cien cañones por banda, viento en popa a toda vela, no corta el mar, sino vuela, un velero bergantín: bajel pirata que llaman por su bravura el Temido, en todo mar conocido del uno al otro confín. La luna en el mar riela, en la lona gime el viento, y alza en blando movimiento olas de plata y azul; y ve el capitán pirata, cantando alegre en la popa, Asia a un lado, al otro Europa y allá a su frente Stambul. «Navega, velero mío, sin temor, que ni enemigo navío, ni tormenta, ni bonanza, tu rumbo a torcer alcanza, ni a sujetar tu valor. «Veinte presas hemos hecho a despecho del inglés, y han rendido sus pendones cien naciones a mis pies. «¿Qué es mi barco? Mi tesoro. ¿Qué es mi Dios? La libertad. ¿Mi ley? ¡La fuerza y el viento! ¿Mi única patria? ¡La mar! «Allá muevan feroz guerra ciegos reyes por un palmo más de tierra: que yo tengo aquí por mío cuanto abarca el mar bravío, a quien nadie impuso leyes. «Y no hay playa sea cual quiera, ni bandera de esplendor, que no sienta mi derecho y dé pecho a mi valor. «¿Qué es mi barco? Mi tesoro. ¿Qué es mi Dios? La libertad. ¿Mi ley? ¡La fuerza y el viento! ¿Mi única patria? ¡La mar! «A la voz de «¡barco viene!» Es de ver cómo vira y se previene a todo trapo a escapar: que yo soy el rey del mar, y mi furia es de temer. «En las presas yo divido lo cogido por igual: sólo quiero por riqueza la belleza sin rival. «¿Qué es mi barco? Mi tesoro. ¿Qué es mi Dios? La libertad. ¿Mi ley? ¡La fuerza y el viento! ¿Mi única patria? ¡La mar! «¡Sentenciado estoy a muerte! Yo me río: no me abandone la suerte, y al mismo que me condena, colgaré de alguna antena, quizá en su propio navío. «Y si caigo, ¿qué es la vida? Por perdida ya la di cuando el yugo del esclavo, como un bravo, sacudí. «¿Qué es mi barco? Mi tesoro. ¿Qué es mi Dios? La libertad. ¿Mi ley? ¡La fuerza y el viento! ¿Mi única patria? ¡La mar! «Son mi música mejor aquilones; el estrépito y temblor de los cables sacudidos, del negro mar los bramidos y el rugir de mis cañones. «Y del trueno al son violento, y del viento al rebramar, yo me duermo sosegado. Arrullado por el mar. «¿Qué es mi barco? Mi tesoro. ¿Qué es mi Dios? La libertad. ¿Mi ley? ¡La fuerza y el viento! ¿Mi única patria? ¡La mar!");
addLink(t, "/([^\\s])+/g","http://google.com");
}
/**
* Add a link to the TextView which is given.
*
* @param textView the field containing the text
* @param patternToMatch a regex pattern to put a link around
* @param link the link to add
*/
public static void addLink(TextView textView, String patternToMatch,
final String link) {
Linkify.TransformFilter filter = new Linkify.TransformFilter() {
@Override public String transformUrl(Matcher match, String url) {
return link;
}
};
Linkify.addLinks(textView, Pattern.compile(patternToMatch), null, null,
filter);
}
【问题讨论】:
标签: android regex textview clickable linkify