Как найти функцию strchr в C # - PullRequest
0 голосов
/ 22 июня 2010

Как я могу использовать функцию strchr C в c #. Пожалуйста, дайте мне некоторые рекомендации .....

Ответы [ 3 ]

4 голосов
/ 22 июня 2010

string.IndexOf

0 голосов
/ 26 октября 2015

Представленные выше ответы, похоже, не на 100% понимают контракт strchr () и не обеспечивают истинную прямую замену ... обычно он возвращает указатель на строку, начинающуюся с этого символа (НЕ индекса).

"Более чистая" реализация:

Предупреждение: Не уверен, что это настолько чисто, насколько это возможно, так как это, вероятно, дает новую строку, не указывающую на оригинал, как в C ++.Может быть невозможно получить истинный указатель substr.Но я не эксперт по C #.

    /// <summary>
    /// C++ strchr Equivalent
    /// </summary>
    /// Let you fill out the stupid <param ...> tags.
    private string strchr(string originalString, char charToSearch)
    {
        int found = originalString.IndexOf(charToSearch);
        return found > -1 ? originalString.Substring(found) : null;
    }

Но я также нашел эту реализацию еще лучше, потому что вы не можете просто сделать C ++ ptr math of + 1 для строки, чтобы пройти через терминатор ...

    /// <summary>
    /// C++ strchr Equivalent (with jump past character option)
    /// </summary>
    /// <param name="originalString"></param>
    /// <param name="charToSearch"></param>
    /// <param name="pastIt"></param>
    /// <returns>String starting at the search char</returns>
    private string strchr(string originalString, char charToSearch, bool pastIt)
    {
        int found = originalString.IndexOf(charToSearch);
        return found > -1 ? originalString.Substring(found + (pastIt ? 1 : 0)) : null;
    }

    /// <summary>
    /// C++ strchr Equivalent (Pure)
    /// </summary>
    private string strchr(string originalString, char charToSearch)
    {
        return strchr(originalString, charToSearch, false);
    }
0 голосов
/ 23 июня 2010

string.IndexOf - это ответ.

Однако, если вы выполняете циклы для функции

strchr returns to the first occurrence of Character to be located in string, or NULL if c is not found

, вы можете сделать что-нибудькак показано ниже:

Создайте функцию как

        /// <summary>
        /// Function: Strchr
        /// Returns the first occurrence of Character to be located 
        /// in string or null otherwise
        /// </summary>
        /// <param name="originalString"></param>
        /// <param name="charToSearch"></param>
        /// <returns></returns>
        private int? Strchr(string originalString,char charToSearch)
        {
            int? found = originalString.IndexOf(charToSearch);
            return found > -1 ? found : null;
        }

И назовите ее так:

string test = "hello";
int? res = Strchr(test, '3'); //Returns null
int? res = Strchr(test, 'h'); //Returns 0

Надеюсь, что это ответ на ваш вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...