gpt4 book ai didi

c++ - 如何同时应用多种格式化方法,例如 ."1,234,567,890"和 "12-3456-7890"到 "1,2-34,56-7,890"

转载 作者:太空宇宙 更新时间:2023-11-04 13:21:12 25 4
gpt4 key购买 nike

例如,如果我想将“1234567890”转换为“1,234,567,890”,我可以使用:

#include <string>
#include <stdio.h>
using namespace std;
int main(){
string st="1234567890";
for(int i=st.length()-3;i>0;st.insert(i,","),i-=3);
printf("%s\n",st.c_str());
return 0;
}

如果我想将“1234567890”转换为“12-3456-7890”,只需将 for 循环替换为:

for(int i=st.length()-4;i>0;st.insert(i,"-"),i-=4);

但问题是,它只能应用一种格式化方法,而且这种格式化方法是顺序的,如果我同时应用 2 个 for 循环,例如:

for(int i=st.length()-3;i>0;st.insert(i,","),i-=3);
for(int i=st.length()-4;i>0;st.insert(i,"-"),i-=4);

输出是 1-,234-,567-,890 但不是“1,2-34,56-7,890”,一般的方法是什么?

或者更简单地说,我想要一个能够:

1. insert "," for every 3 characters
2. insert "-" for every 4 characters
3. insert ":" for every 7 characters
.
.
.

可以用通用的方式添加插入条件,最简单的方法是什么?

最佳答案

您可以只使用一个循环,递减 1,并带有条件插入,而不是使用多个循环。例如:

string st="1234567890";
int originalLength = st.length();
for(int i=originalLength-1;i>0;i--)
{
int positionFromEnd = originalLength - i;

if (positionFromEnd % 3 == 0)
st.insert(i,",");


if (positionFromEnd % 4 == 0)
st.insert(i,"-");

if (positionFromEnd % 5 == 0)
st.insert(i,":");

// add more condition here as need be
}

printf("%s\n", st.c_str());

关于c++ - 如何同时应用多种格式化方法,例如 ."1,234,567,890"和 "12-3456-7890"到 "1,2-34,56-7,890",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35191538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com