java中如何知道一个字符串中有多少个字,把每个字打印出来,举例

本文介绍了一个简单的Java程序,用于处理字符串Iamateacher!。该程序遍历字符串中的每一个字符,遇到空格则打印之前读取的单词,并计数空格数量。通过此例,展示了如何使用Java进行基本的字符串操作。

9.6 About string,"I am ateacher",这个字符串中有多少个字,且分别把每个字打印出来。
public class Test {
    static intamount_space = 0; //此变量用来记录空格的数量。the variable named amount_space isused to count the number of the space.
    static intflag_Pro = 0; //此变量用来记录现在处理到大字符串中哪一个字符了。this pointer is used toremember the position where we look over.
    staticString newstring = "I am a teacher!";
    publicstatic void main(String[] args) {
       String outputword = "";
       for (int i = flag_Pro; i < newstring.length(); i++) {
           if (newstring.substring(i, i + 1).equals(" ")) {//假如newstring.substring(i, i + 1)马克-to-win,取出的字符是个空格,就执行这段程序。
             if(!outputword.equals("")){System.out.println(outputword);outputword = "";}
             amount_space++;
               flag_Pro++; // and next time we will start at a new position
               continue;
           } else {//newstring.substring(i, i +1);如果不是一个空格,就加到outputword中。
更多请见:https://blog.youkuaiyun.com/qq_44639795/article/details/103142891

<think>好的,我需要帮用户解决在Java中从字符串提取数并生成新字符串的问题。首先,用户已经提到了参考引用,特别是引用[3]中的正则表达式方法,这应该是一个关键点。 首先想到的是使用正则表达式来匹配字符串中的所有数Java中的Pattern和Matcher类很适合这个任务。步骤应该是先创建一个匹配数的正则表达式,比如用\\d+来匹配连续的数。不过可能需要考虑数是否连续,比如用户是否希望将123abc456提取成"123456"还是分开处理。这里用户的需求是生成新字符串,所以应该是将所有数连续提取出来组成新字符串,比如输入"a1b23c",输出"123"或者"123"?可能需要确认,但通常用户可能想要的是提取所有数符,不管是否连续,所以用\\d来匹配每个符,然后用循环拼接。 然后,示例代码部分需要展示如何用Pattern和Matcher来实现。代码的大致步骤是:导入必要的包(java.util.regex),创建Pattern对象,用Matcher去查找字符串中的每个,然后通过StringBuilder来拼接结果。这样效率更高,因为字符串拼接在循环中使用+的话会生成很多临时对象,而StringBuilder可以避免这个问题,参考引用[1]中提到StringBuilder的高效性。 另外,用户可能还需要处理其他情况,比如字符串中有没有其他特殊符,或者是否需要处理小数点等。但根据用户的问题,可能只需提取整数部分。所以正则表达式用\\d,匹配每个符。 测试用例的话,可以举例如输入"abc123def45",输出"12345"。这样代码就能正确提取所有数并合并成新字符串。 还需要考虑是否有可能没有数的情况,这时候应该返回空字符串。代码中初始化StringBuilder,如果没找到数,结果就是空,这样处理是对的。 然后,可能用户会问到其他方法,比如不使用正则表达式,而是遍历每个符,判断是否是数。这也是可行的,但正则表达式更简洁。不过作为备选方案,可以提一下,比如用循环和Character.isDigit方法。这样用户有更多选择。 最后,生成相关问题,可能需要考虑性能、其他提取方式或者处理更复杂的情况,比如包含小数或负数,但根据当前问题,保持相关问题围绕提取数的方法展开。</think>在Java中从字符串提取数生成新字符串,推荐使用正则表达式配合`StringBuilder`类实现高效处理。以下是分步说明和示例代码: ### 方法实现 1. **正则表达式匹配数** 使用`\\d+`匹配连续数,或`\\d`匹配单个数符。选择`\\d`可以处理非连续数场景。 2. **使用`StringBuilder`拼接结果** 避免字符串频繁修改的性能损耗(参考引用[1])。 #### 示例代码 ```java import java.util.regex.Matcher; import java.util.regex.Pattern; public class NumberExtractor { public static void main(String[] args) { String input = "a1b23c45d"; String result = extractNumbers(input); System.out.println("提取结果:" + result); // 输出:12345 } public static String extractNumbers(String str) { // 正则表达式匹配所有数符 Pattern pattern = Pattern.compile("\\d"); Matcher matcher = pattern.matcher(str); StringBuilder sb = new StringBuilder(); while (matcher.find()) { sb.append(matcher.group()); } return sb.toString(); } } ``` ### 方法对比 | 方法 | 优点 | 缺点 | |--------------------|--------------------------|-----------------------| | 正则表达式 | 代码简洁,适合复杂匹配 | 需熟悉正则语法 | | 循环遍历符 | 直观,无需正则知识 | 代码量较大 | ### 其他实现方式 若不用正则表达式,可用遍历法: ```java public static String extractNumbersManual(String str) { StringBuilder sb = new StringBuilder(); for (char c : str.toCharArray()) { if (Character.isDigit(c)) { sb.append(c); } } return sb.toString(); } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mark_to_win

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值