Java 获取具有跨距的EditText的左侧文本

Java 获取具有跨距的EditText的左侧文本,java,android,split,android-edittext,spannablestring,Java,Android,Split,Android Edittext,Spannablestring,我的Android应用程序在其布局中有一个EditText EditText可以包含具有可选ImageSpans的文本 在某一点上,用户可以执行某些编辑,即可以编辑文本和/或删除跨距 我得到了插入符号的位置 int caretPosition= editText.getSelectionStart(); 我需要知道在这一点上,左边的文本,没有跨距 我的意思是,如果左侧不存在跨距,则返回的文本正是预期的,而如果存在一些跨距,则文本中没有空格或其他字符来代替跨距 范例 aaaaaaaaaaa&l

我的Android应用程序在其布局中有一个EditText

EditText可以包含具有可选ImageSpans的文本

在某一点上,用户可以执行某些编辑,即可以编辑文本和/或删除跨距

我得到了插入符号的位置

 int caretPosition= editText.getSelectionStart();
我需要知道在这一点上,左边的文本,没有跨距

我的意思是,如果左侧不存在跨距,则返回的文本正是预期的,而如果存在一些跨距,则文本中没有空格或其他字符来代替跨距

范例

aaaaaaaaaaa<span>bbbbbb<span>cccc_dddddd<span>eeeeee
这很困难,因为跨度看起来像一个单独的字符,但我不确定。我不知道如何分割一个可编辑的部分来迭代左边的部分


如何做到这一点?

我认为这就是解决方案:

int caretPosition=editText.getSelectionStart();
Spannable spannable=editText.getText();
String leftPartWithoutSpans=spannable.subString(0,caretPosition).toString();

在将字符串从开始拆分到选择开始后,您是否尝试过使用正则表达式?@Nizar如果您引用文本,则其中没有span的HTML部分it@Nizar当您从可编辑文件中获取文本时,您不会同时获得span的HTML,因此在搜索span时,您没有任何可应用正则表达式的内容。否则我不理解你的建议。试着为答案写一些代码。你能分享你的代码吗?我正试图重新创造一个类似的情况,我不会接近你的case@Nizar请看我的答案
int caretPosition=editText.getSelectionStart();
Spannable spannable=editText.getText();
String leftPartWithoutSpans=spannable.subString(0,caretPosition).toString();