2016-08-21 2 views
2

아래 스 니펫에서 아랍어로 된 검색 입력과 일치하는 단어의 각 부분을 강조 표시하려고합니다. 본문. 이 문제를 어떻게 해결할 수 있습니까?AngularJS - 텍스트 일부가 영어 이외의 언어로 깨졌습니다.

입력란에 مست을 입력하면 문제가 표시됩니다.

angular.module("myApp", []) 
 
.controller("main", function($scope){ 
 
$scope.content="تتيح لك إدارة المستخدمين العديد من الخدمات الأساسية كعرض مستخدمي النظام والتعديل عليها وحذفها.. إضافة إلى عمليات الفلترة عليهابناء على عدة خيارات متاحة " 
 
}) 
 
.filter('highlight', function ($sce) { 
 
     return function (text, searchSrting) { 
 
      if(searchSrting){ 
 
       searchSrting = searchSrting.split(/\s+/); 
 
       if(typeof text !== "undefined") 
 
        for (var i = 0; i < searchSrting.length; i++) { 
 
         text = text.replace(new RegExp('(' + searchSrting[i] + ')', 'gi'), 
 
          '<span class="highlighted">$1</span>') 
 
        } 
 
       return $sce.trustAsHtml(text) 
 
      } 
 
     } 
 
    })
.highlighted{ 
 
    background-color : yellow
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.7/angular.js"></script> 
 

 
<div ng-app="myApp"> 
 
<div ng-controller="main"> 
 
    <label>search</label> 
 
    <input ng-model="searchString"/> 
 
    <div ng-if="!searchString">{{content}}</div> 
 
    <div ng-if="searchString" ng-bind-html="content | highlight:searchString"></div> 
 

 
    </div> 
 
</div>

+0

이에 정규식을 적용하여 문제처럼 보인다 유니 코드. 약간 특화된 무언가입니다. 각진 작업을하는 소수의 사람들은 정규 표현식과 아랍어 스크립트에 대해 알 수 있습니다. 당신은 당신의 질문에 몇 가지 다른 태그를 추가하려고 할 수 있습니다. – Claies

+0

완료 :이 제안에 감사드립니다. @Claies –

답변

2

하기 전에 당신의 하이라이트의 말에 zero-width-joiners의 몇 가지를 추가 문자가 제대로 가입하게 걸쳐 :

text = text.replace(new RegExp('(' + searchSrting[i] + ')', 'gi'), 
    '&zwj;<span class="highlighted">$1&zwj;</span>')