2016-10-17 5 views
2

.NET 4.6.1 C#Java Character.MATH_SYMBOL to C# преобразование

Я нашел возможное решение проблемы, которую я испытываю. Решение написано на Java. Я конвертировал 99% из них в C# легко, без 1 строки. Вот краткий обзор.

У них есть строка, которая преобразуется в массив символов. Вот C# эквивалент:

string pFormula = "my string"; 
    char[] tokens = pFormula.ToCharArray(); 

Тогда возникает следующая строка кода (это Java):

if (Character.getType(tokens[i]) == Character.MATH_SYMBOL){ 
    //do something 
    } 

Это где я застрял. Я могу это сделать:

 tokens[i].GetType() //Character.getType(tokens[i]) 

Кто-нибудь знает C# эквивалент Character.MATH_SYMBOL в Java? Благодаря

+0

@SajalDutta это возвращает истину за $ тоже, но это не символ математики – mybirthname

ответ

4
char plus = '+'; 

if(char.GetUnicodeCategory(plus) == UnicodeCategory.MathSymbol) 
{ 
    //return true 
} 

Вы должны использовать UnicodeCategory

Имейте в виду, не каждый символ, который может быть использован в математике в UnicodeCategory.MathSymbol. * и/не являются частью MathSybols

char a2 = '*'; 

if(char.GetUnicodeCategory(a2) == UnicodeCategory.OtherPunctuation) 
{ 
    //return true, but return false for Math. 
} 

Вот как это выглядит, как юникод символ для умножения и деления, используемого в MathSymbols.

char multiplication = '×'; 
char division = '÷'; 

Вот это должно быть List of characters in unicode designation Sm(symbol,math)

+0

Спасибо за ответ. Для этого нужны формулы excadsheadsheet. Мы не слишком причудливы, поэтому стандартного + - */может быть достаточно. благодаря – BoundForGlory

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