将字符串中的 int 转换为字母; [关闭]

Posted

技术标签:

【中文标题】将字符串中的 int 转换为字母; [关闭]【英文标题】:Converting int in string to letters; [closed] 【发布时间】:2020-06-25 20:01:10 【问题描述】:

我完全没有任何想法,

如何将包含一些数字的字符串转换为包含与该数字一样多的字母的字符串。

例如,如果用户提供类似“B5C5”的字符串,我想将其转换为类似“BBBBBCCCCC”的字符串。

有什么简单方便的方法吗?我将不胜感激任何线索。谢谢

【问题讨论】:

你可以使用正则表达式 我怀疑有什么方法你会认为简单方便。不要指望快捷方式,您只需要编写代码。像这样的问题被称为解析问题,也许你可以google一下。 你的输入总是有一个字母后跟字符的序列吗?另外,您是否尝试过 any 方法,即使它并不简单?请也分享一下。如果您表明您尝试过某事,您更有可能获得帮助。 【参考方案1】:

假设输入字符串s始终是单个字母的序列,后跟单个数字,重复;这是 range-v3 的解决方案:

auto to_str = [](auto s)  return rv::repeat_n(s[0], s[1] - '0'); ;

auto res = s | rv::chunk(2) | rv::transform(to_str) | rv::join | ranges::to<std::string>;

这是demo。

【讨论】:

【参考方案2】:

这是我的解决方案,希望对您有所帮助。

#include<iostream>
#include<ctype.h>
#include<string>
using namespace std;

string convert_alphanumeric_to_alpha(string input)
    string new_string = "";
    string num_to_repeat = "";
    for(int i = 0; i < input.length(); i++)
        if(isdigit(input[i]) && i < input.length() - 1)
            num_to_repeat += input[i];
        else
            if(i == input.length() - 1)
                num_to_repeat += input[i];
            
            if(num_to_repeat != "")
                int num = stoi(num_to_repeat) - 1;
                for(int j = 0; j < num; j++)
                    new_string += new_string[new_string.length() - 1];
                
                num_to_repeat = "";
            
            if(!isdigit(input[i]))
                new_string += input[i];
            
        
    
    return new_string;


int main()
    cout << convert_alphanumeric_to_alpha("a2b4c6d8e10f12") << endl;
    return 0;

输出:aabbbbccccccdddddddddeeeeeeeeeeffffffffffff

【讨论】:

以上是关于将字符串中的 int 转换为字母; [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Haskell 函数将 Int 转换为 alpha numerotation [关闭]

如何将数组中的字符串转换为小写[关闭]

将字母数字 (Base36) 转换为 int (Base 10),反之亦然

使用 0x (C#) 将十六进制字符串转换为 int32 [关闭]

将字符串转换为整数部分 C++ [关闭]

在python中,如何将一个字符串中的小写字母全部转换为大写?