C语言提取字符串中的所有数字

C语言提取字符串中的所有数字,第1张

#include<stdioh>

int

main()

{

char

str[1000];//保存读取到的字符

long

sum=0,data[1000];

int

i=0,top=0;

printf("输入字符串:\n");

scanf("%s",str);

while(str[i]!='\0')//未到字符串末尾

{

if(str[i]>='0'&&str[i]<='9')//如果是数字

sum=sum10+(str[i]-'0');//连续数字转换为数

else

if(sum!=0)//保存这个数

{

data[top++]=sum;

sum=0;

}

i++;

}

if(sum!=0)//判断最后一个字符是否是数

data[top++]=sum;

printf("字符串中的数字是:\n");

i=0;

while(i<top)

{

printf("%ld",data[i]);

if(i<top-1)//不打印最后一个逗号

printf(",");

i++;

}

printf("\n");

system("pause");

return

0;

}

CString s=_T("123456");

sGetAt(0)// 第一个字符 '1'

sGetAt(1)// 第二个字符 '2'

sGetAt(2)// 第三个字符 '3'

//以此类推

可以用char获取

简单一点的思路是用递归:

public class Class1 {

  

  //求组合数 C(m,n)

  public static int C(int m,int n){

    int c=1;

    int k=1;

    for (int i=1;i<=m;i++){

      c=c(n+1-i);

      k=ki;

      }

    return (c/k);

    }

  

  //获取str中所有长度为m的子串

  //递归方法

  public static String[] getSubString(String str,int m){

    String[] s;//保存子串

    int count=0;//子串计数器

    int n=strlength();//原字符串长度

    if (m>n || m<=0){

      s=new String[]{};

      return s;//如果子串长度大于字符串长度,或子串长度小于等于0,则不会有满足要求的子串

    }

    else{

      s=new String[C(m,n)];//保存子串,子串个数为C(m,n)

    }

    if (m==1){//若子串长度为1,则返回字符串的每个字符即可

      int i;

      for (i=0;i<strlength();i++){

        count++;

        s[count-1]=""+strcharAt(i);

      }

    }

    else{//否则,长度为m的子串由长度为m-1的子串再加一个字符组成

      for (int j=m-1;j<strlength();j++){

        String[] ss=getSubString(strsubstring(0, j),m-1);

        for (int k=0;k<sslength;k++){

          count++;

          s[count-1]=ss[k]+strcharAt(j);

        }

      }

    }

    return s;

  }

  

   public static void main(String args[]) { 

     String str="abcd";

     int m=2;

     String[] ss=getSubString(str,m);

     for(String s : ss)

       Systemoutprintln(s);

   }

}

如果不用递归,可以用下列算法:

求“abc”,m=2的子串,等价于求 "123",m=2的子串。可以看出,符合条件的子串是12,23,13。也就是从123 三个数字里,找出所有长度为2的升序排列。

如果字符串长度为n,那么等价的命题就是从1到n n个数字里,找出所有长度为m的升序排列。

此时的解法为:

步骤1:可以找出所有的长度为m的排列。这可以通过一个长度为m的栈来实现;

步骤2:筛选出其中符合升序的排列(每一位数字大于前一位)。这样也自然会过滤掉有重复数字的排列。

最后,将这些升序排列映射回子字符串即可。

下面的代码在此思路上稍微做了改进:

package project1;

public class Class1 {

  

  //求组合数 C(m,n)

  public static int C(int m,int n){

    int c=1;

    int k=1;

    for (int i=1;i<=m;i++){

      c=c(n+1-i);

      k=ki;

      }

    return (c/k);

    }

  

  //获取str中所有长度为m的子串

  public static String[] getSubString(String str,int m){

    String[] s=new String[]{};//保存子串

    int count=0;//子串数目

    int n=strlength();//原字符串长度

    if (m>n || m<=0)

      return s;//如果子串长度大于字符串长度,则不会有满足要求的子串

    else

      s=new String[C(m,n)];//保存子串

    int[] k=new int[m];

    for (int i=0;i<m;i++){

      k[i]=i;

      }

    int p=m-1;

    int end=0;

    while (end==0){

      //保存当前得到的子串

      count++;

      String temps="";

      for (int i=0;i<m;i++)

        temps+=strcharAt(k[i]);

      s[count-1]=temps;

      

      //获取下一个子串

      k[p]=k[p]+1;

      while (p>=0 && k[p]-p>n-m){

        p=p-1;

        if (p>=0)

          k[p]=k[p]+1;

      }

      if (p>=0){

        for (int i=p+1;i<m;i++)

          k[i]=k[p]+i-p;

        p=m-1;

      }else{

        end=1;

      }

    }

    return s;

  }

  

   public static void main(String args[]) { 

     String str="abcd";

     int m=2;

     String[] ss=getSubString(str,m);

     for(String s : ss)

       Systemoutprintln(s);

   }

}

结果:

ab

ac

ad

bc

bd

cd

Process exited with exit code 0

以上两种算法均未考虑原字符串中有重复字符的情况。如果有重复字符,需要在得到的子串中过滤掉重复子串。代码这里就不写了。

越简单越好是吧……

HRESULT URLDownloadToFile(

LPUNKNOWN pCaller,

LPCTSTR szURL,

LPCTSTR szFileName,

DWORD dwReserved,

LPBINDSTATUSCALLBACK lpfnCB

);

所属头文件Urlmonh

所属库Urlmonlib

用这个函数下载到一个文件里面,比如

URLDownloadToFile(0, ">

1、获取源码:直接解压缩,然后通过dex2jar工具反编译classesdex文件得到classes文件,然后通过jd-gui反编译classes文件,得到java文件。

2、获取AndroidManifestxml文件内容:通过AXMLPrinter2jar将二进制文件转成文本形式进行获取。

通过AXMLPrinter2jar获取AndroidManifestxml内容时,发现有些值是放在stringsxml中,而stringsxml文件是被打包在resourcesarsc文件里面,用apktool可以反编译源代码,通过cmd命令,进入到解压缩的文件夹下,然后执行反编译命令即可:

apktoolbat d e:\apktool\6apk

其中res文件夹下的命令可以复原,可以查看stringsxml。也可以直接查看AndroidManifestxml。

java文件被反编译成smali文件,放在smali文件夹下

java中如何获取某个字符在另一个字符串中的全部索引值 最笨的方法,但是也是最有效的方法:

public static void main(String[] args) {

String str ="爱新觉罗是谁啊爱何为爱为什么呢爱新觉罗";

int len = strlength();

int count = 0 ;

for(int i =0 ; i< len ; i++){

String temp = strcharAt(i)+"";

if(tempequals("爱")){

Systemoutprintln("出现在第:"+(i+1)+"个索引位置");

count++;

}

}

Systemoutprintln("共出现次数:"+count);

}

不是已经有索引了吗 自己运行一下看看。

如何获取Java中一个String字符串中的某一个字符的“索引值”?

在一个String字符串中 查找某个汉字的索引 可以使用strindexOf("字") 获取在字符串中的索引位置,同样索引从0开始,若字符串中没有该汉字, 返回-1就行了。

Java

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

JSP中如何判断某个字符串中是否包含另一个字符

aindexOf("yes")

如果返回-1就不包含,

如果返回其它值,

就包含

<%

outprintln("yesterday"indexOf("yesads"));

%>

js中怎么获取字符串中的某个字符

根据下标获取呀。

var str="dgdfgdf123";for(i=0;i<strlength();i++){ alert(strcharAt(i));}

有一个字符串包含n个字符,写一个函数,将字符串中从第m个字符开始的全部字符复制到另一个字符串中

#include <stdioh>

void copyText(char src, unsigned int pos, char dest){

src+=pos;

while(src) dest++=src++;

dest='\0';

}

int main()

{

char a[]="hello world",b[20];

copyText(a,5,b);

printf("%s => %s",a,b);

return 0;

}

==================

hello world => world

bat如何获取字符串中某个字符的多少

@echo off & setlocal enabledelayedexpansion set "Str=BDQABDAWBFANFAWNFANF"for /l %%a in (0,1,50) do ( if "!Str:~%%a,1!" equ "A" set/a Sumstr+=1)echo 在字符串:!Str! 有!Sumstr!个A字符pause>nul

delphi中,怎样把字符串中的一个字符副给另一个字符串?

如果只是实现你所说的这个 很简单 呵呵

var S1,S2:String;

begin

S1:=\'abcd\';

S2:=copy(S1,Pos(\'c\',S1),1);

label1Caption:=S2;

end;

当然你如果取的是某位置的字符串 用这个函数比较简单

function MidStr(const AText: string; const AStart, ACount: Integer): string; $[StrUtilspas

用java如何将一个字符串中的一些字符逐个写入另一个字符串?

直接调用stringcharAt(index)方法循环就可以了

public class Test {

public static void main(String[] args) {

String firstStr = "abcdefg12345";

String secondStr = getEachCharInTheStr(firstStr);

Systemoutprintln(secondStr);

}

private static String getEachCharInTheStr(String str) {

StringBuffer = new StringBuffer();

for(int i = 0, len = strlength(); i < len; i++){

append(strcharAt(i));

}

return toString();

}

}

-------------

abcdefg12345

在matlab中,读取一个字符串中的某个字符的问题

首先你得确定字符串中数字出现的位置有什么相似的规律,有规律的话就好处理了。

比如说数字永远出现在“为”之后,等等,或者说完全没有什么规律,那只能通过字符的ascII码值来判断是否是数字了,然后提取

c语言 输入一个字符串,将该字符串中从第m个字符开始的全部字符复制到另一个字符串

#include <stdioh>#define SIZE 100void strmcp(char s,char t, int n);int main(){ int i=0; int c,m; char a[SIZE]; char b[SIZE]; printf("m="); scanf("%d",&m); printf("Input string:"); while((c=getchar())!=EOF)当遇到文件结束符输入结束 b[i++]=c; b[i]='\0'; strmcp(a,b,m); printf("%s\n",a);}void strmcp(char s,char t, int n){ while((s=(t+n))!='\0'){ s++; t++; }}

不提供部分阅读就代表读秀还没这本书,部分阅读的书可以通过咨询获取全文再用读秀下载器之类的软件获取整本书,不会有什么长久的软件可以使用,一般都是出来一个封一个,所以这些软件是不太会传播的,网上能下载的到的大都失效,想要新的你可以去网上读书园地,读书宝库之类的网站寻找。

至于那些可以一次性获取全文就不是一般人可以拥有的了淘宝上会有卖,需要的话可以关注一下。

以上就是关于C语言提取字符串中的所有数字全部的内容,包括:C语言提取字符串中的所有数字、VC MFC下 定义 CString str 怎样获取str的第二个和第三字符(用什么函数)、java题, 要求:输入一个数m,找出str中m个字符的所有子字符串等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9483689.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存