Извлечь часть текста из textView и сделать этот текст кликабельным?

Если вы пытаетесь найти количество будних дней W (например, понедельник, вторник и hellip;) между двумя датами N и M , вы можете:

  1. Найти следующее происшествие N ' из W после N .
  2. Найдите количество дней между N ' и M .
  3. Если N' после M , между ними нет W . В противном случае количество дней W должно быть равно 1 + floor ((M-N) / 7) .
function getWeekdaysBetweenDates(firstDate, secondDate, dayOfWeek) {
    var MILISECONDS_IN_DAY = 86400000;

    function getNextDayOfWeek(date, dayOfWeek) {
        date.setDate(date.getDate() + (7 + dayOfWeek - date.getDay()) % 7);
        return date;
    }

    firstDate = getNextDayOfWeek(firstDate, dayOfWeek);
    if (firstDate > secondDate) {
        return 0;
    }

    return 1 + Math.floor(((secondDate - firstDate) / MILISECONDS_IN_DAY) / 7);
}

var firstDate = new Date("March 1, 2015");
var secondDate = new Date("March 25, 2015");
console.log(getWeekdaysBetweenDates(firstDate, secondDate, 2));
// 4
2
задан Santanu Sur 3 March 2019 в 20:02
поделиться

3 ответа

Вы можете использовать clickable span в строке spannable следующим образом: -

SpannableString ss = new SpannableString(" Hello, @John how's going on");
ClickableSpan clickableSpan = new ClickableSpan() {
   @Override
   public void onClick(View textView) {
     //perform click operation
   }
   @Override
   public void updateDrawState(TextPaint ds) {

   }
};

ss.setSpan(clickableSpan, startIndex, endIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

yourTv.setText(ss);
yourTv.setMovementMethod(LinkMovementMethod.getInstance());
yourTv.setHighlightColor(Color.TRANSPARENT);

startIndex - это индекс J слова Джон в полной строке

endIndex - это индекс n слова Джона в полной строке.

& amp; метод onclick будет запущен при нажатии на john ..

Редактировать

Извлечь имя пользователя John вы можете разбейте строку и получите ее следующим образом: -

 String username = yourString.split("@")[1].split(" ")[0]; // this will extract john 
0
ответ дан Santanu Sur 3 March 2019 в 20:02
поделиться

Это также будет работать с несколькими упоминаниями.

var str = "Hello, @John how's going on. Greedings to @Bob.";
    var regex = /[@]\S[^. ]*/g;

    var matches = str.match(regex)
    var split = str.split(regex);

    for(var i = 0; i<matches.length;i++){
        document.body.appendChild(document.createTextNode(split[i]));

        var a = document.createElement('a');
        a.appendChild(document.createTextNode(matches[i]));
        a.title = "my title text";//text you can see onHover
          a.href = "http://example.com/users/"+matches[i].split('@')[1];//link to user
        document.body.appendChild(a);
    }
    document.body.appendChild(document.createTextNode(split[split.length-1]));

0
ответ дан Janneck Lange 3 March 2019 в 20:02
поделиться

Здесь вы можете установить строку В текстовом представлении в вашем XML-файле это не будет проблемой. затем вы можете добавить в него атрибут onclick: «clickable», и он будет работать нормально

0
ответ дан Naveen Lakhchaura 3 March 2019 в 20:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: