如何在单个输入中(单独)读取由空格分隔的字符串? [关闭]

Posted

技术标签:

【中文标题】如何在单个输入中(单独)读取由空格分隔的字符串? [关闭]【英文标题】:How can i read the strings(individually) in a single input, that are seperated by white space? [closed] 【发布时间】:2022-01-20 01:05:39 【问题描述】:

所以,如果给我一个输入,如下:

Hello        how   
are   you
doing?  I'm      doing 
fine!      *** 

我该怎么做才能得到输出:

There are 9 strings:
1. Hello
2. how
3. are
4. you
5. doing?
6. I'm 
7. doing
8. fine!
9. ***

所以基本上,我想要的是单独读取由空格分隔的字符串! 有什么想法吗?

【问题讨论】:

使用strtok()在空格处分割输入字符串。 这能回答你的问题吗? Split string with delimiters in C 【参考方案1】:
package com.tools;

import java.util.StringTokenizer;

public class StringParser 

    
    public void parse(String str)
    
        StringTokenizer st = new StringTokenizer(str,"\n\r ");
        String token ="";
        int num = 0;
        while (st.hasMoreElements())
        
            token = st.nextElement().toString();
            if (token.trim().length() > 0)
            
                System.out.println(++num+". "+token);
            
        
        
    
    
    public static void main (String a[])
    
        
        StringParser st = new StringParser();
        String str = "Hello        how   \r\n"
                + "are   you\r\n"
                + "doing?  I'm      doing \r\n"
                + "fine!      *** ";

        st.parse(str);
    

【讨论】:

问题是关于 C。不是 Java。【参考方案2】:

正如其他人所提到的,使用string.h 中的strtok。它将允许您选择一个分隔符来查找子字符串,在您的情况下它只是" "。然后,您可以循环并找到所有由空格分隔的子字符串。

#include <stdio.h>
#include <string.h>

int main() 
    char words[] = "Hello     how  are   you   doing?  ***";
    char *word = strtok(words, " ");

    while (word != NULL) 
        printf("%s\n", word);
        word = strtok(NULL, " ");
    

    return 0;

输出:

Hello
how
are
you
doing?
***

【讨论】:

以上是关于如何在单个输入中(单独)读取由空格分隔的字符串? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 中读取由空格分隔的字符串? [关闭]

如何使用Python 3中的readlines读取由空格分隔的整数输入文件?

如何在 C++ 中读取由空格分隔的十六进制字节数据

在c ++中输入n个空格分隔的整数

如何构建一个正则表达式来捕获由单个空格分隔的单词?

从字符串中以空格分隔和引号括起来的元素获取数据字段