我有一个TextView.我通过匹配一些正则表达式模式添加了像"@abc","#android"这样的自定义链接.链接显示正常.但是,我没有办法提取被点击的链接的文本.我正在使用SpannableString将setText设置为textview.然后我使用我的自定义ClickableSpan设置跨度.它工作正常.另外我还可以捕捉onclick事件.但是onClick()方法有一个View参数.如果我在View上调用getText()(在将其类型转换为TextView之后),则返回整个文本.我搜索了很多,但总是找到添加链接和捕获事件的方法,但没有人告诉我获取链接的文本.
这是我用来添加链接和接收onclick的代码.我从其中一个SO线程中获取了代码..
Pattern pattern = Pattern.compile("@[\\w]+");
Matcher matcher = pattern.matcher(tv.getText());//tv is my TextView
while (matcher.find()) {
int x = matcher.start();
int y = matcher.end();
final android.text.SpannableString f = new android.text.SpannableString(
tv.getText());
f.setSpan(new InternalURLSpan(new View.OnClickListener() {
public void onClick(View v) {
showDialog(1);
}
}), x, y, android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.setText(f);
tv.setLinkTextColor(Color.rgb(19, 111, 154));
tv.setLinksClickable(true);
Run Code Online (Sandbox Code Playgroud)
这是InternalURLSpan:
class InternalURLSpan extends android.text.style.ClickableSpan {
View.OnClickListener mListener;
public InternalURLSpan(View.OnClickListener listener) {
mListener = listener; …Run Code Online (Sandbox Code Playgroud) 在Linux和其他操作系统中,文件名称中可以包含类似字符(,),[,],<space>,等.每当我尝试在我的bash命令中使用任何这些文件时,如cat,ls等,我需要像下面这样逃避它们:
filename abc(10-oct).txt
cat abc(10-oct).txt wont work.
Run Code Online (Sandbox Code Playgroud)
如果我在前面"("和")"字符有"\"像
cat abc\(10-oct\).txt
Run Code Online (Sandbox Code Playgroud)
这有效
我试图通过Java程序自动化一些Linux shell命令.我不确定我必须要处理的所有字符并逃脱它们.
如果有人可能指向我可以获得整个字符列表的资源,那将是一个很大的帮助.
非常感谢
问题说明了一切。我有一个指向的File对象/home/user/filename1。
如果我调用file.getAbsolutePath(),它将返回 /home/user/filename1
我的问题是-
谢谢