2014-01-09 4 views
0

Я получаю данные из источника, как это:Как отделить текст на арабском и английском в строковом значении?

Air Passage - первый раз Присоединение تذاكر سفر حضور لأول مره

Мне нужно разделить этот вид данных в двух столбцах, английский текст должен перейдите в один столбец, и арабский текст должен войти в другой столбец.

Может ли кто-нибудь помочь мне с этим, пожалуйста?

+0

regex или, возможно, посмотрите на числовое значение для букв. –

+0

Всегда ли такая же картина: сначала английская часть, затем арабская часть? –

ответ

0

Одно простое решение было бы (если это возможно) форматировать данные на что-то вроде этого:

Air Passage - первый раз Присоединение | تذاكر سفر حضور لأول مره

И тогда вам просто нужно сделать раскол на «|».

0

REGEX

(?P<en>[a-zA-Z-\s]+) (?P<ar>[\w\s]+) 

Kiki это хороший инструмент для проверки нескольких случаев (Вы, возможно, потребуется добавить большее количество символов в диапазонах)

я удалить ^ и $ более общий случай.

0

USE [HRData] GO

/* Объект: UserDefinedFunction [DBO] [StripVenNameAR] Дата сценария:. 1/14/2014 8:50:31 AM */ SET ANSI_NULLS ПО GO

SET QUOTED_IDENTIFIER OFF GO

CREATE FUNCTION [DBO]. [StripVenNameAR] (@InString в NVARCHAR (4000))
ВОЗВРАТ SMALLINT КАК
НАЧАТЬ
Объявляет @ReturnVal, как SMALLINT
Объявите @OutString, как NVARCHAR (4000)
Объявляет @Pos, как SMALLINT
Объявляет @CurChar, как NVARCHAR (1)
SET @ReturnVal = 0

IF LEN(@InString) = 0      
    SET @ReturnVal = 0     
ELSE       
BEGIN      
    Set @Pos = 1      
    SET @OutString = ' '      
    WHILE (@Pos <= Len(@InString))     
    BEGIN     
     Set @CurChar = SUBSTRING(@InString, @Pos, 1)    
     if unicode(@CurChar) between 1536 and 1791 
      SET @ReturnVal = @Pos 
      Set @Pos = @Pos + 1  
      if @ReturnVal>=1 
      Break 
      else 
      continue   
    END 
    end 

ВОЗВРАТ @ReturnVal
конец

GO

Смежные вопросы