String清除字符串前后空格,包括全角空格

/**
 * 清除掉字符串前后的空格,包括全角空格。
 */
public static String trim2(String input) {
    int end = input.length();
    int start = 0;
    char[] val = input.toCharArray();
    while (start < end && (val[start] <= ' ' || Character.isSpaceChar(val[start]))) {
        start++;
    }
    while (start < end && (val[end - 1] <= ' ' || Character.isSpaceChar(val[end - 1]))) {
        end--;
    }
    return start > 0 || end < input.length() ? input.substring(start, end) : input;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用string对象的成员函数erase和find_first_not_of来实现删除字符串前后空格字符。 具体步骤如下: 1. 使用find_first_not_of函数找到第一个非空格字符的位置,即字符串前面的空格字符的位置。 2. 使用erase函数删除字符串前面的空格字符。 3. 使用find_last_not_of函数找到最后一个非空格字符的位置,即字符串后面的空格字符的位置。 4. 使用erase函数删除字符串后面的空格字符。 示例代码如下: ```c++ #include <iostream> #include <string> using namespace std; string trim(string str) { // 删除字符串前面的空格字符 str.erase(, str.find_first_not_of(" ")); // 删除字符串后面的空格字符 str.erase(str.find_last_not_of(" ") + 1); return str; } int main() { string str = " hello world "; cout << "原始字符串:" << str << endl; str = trim(str); cout << "删除前后空格字符后的字符串:" << str << endl; return ; } ``` 输出结果为: ``` 原始字符串: hello world 删除前后空格字符后的字符串:hello world ``` ### 回答2: 字符串是程序中常用的数据类型,而在处理字符串时,其中的空格字符常常会影响程序的逻辑判断和处理结果。所以,我们需要一个方便的方法来删除字符串中的前后空格,那么如何通过string对象实现呢? 首先,我们需要了解string类中的成员函数和操作符,其中包括: 1. string::size():返回字符串的大小; 2. string::find_first_not_of():返回字符串中第一个不是待查字符的位置; 3. string::find_last_not_of():返回字符串中最后一个不是待查字符的位置; 4. string::substr():返回从指定位置开始的子字符串; 5. string::erase():删除从指定位置开始的字符。 接下来,我们可以通过以下步骤来实现删除字符串前后空格字符: 1. 使用string::find_first_not_of()函数查找字符串中第一个不是空格字符的位置,并记录该位置; 2. 使用string::find_last_not_of()函数查找字符串中最后一个不是空格字符的位置,并记录该位置; 3. 使用string::substr()函数从记录的第一个位置开始,截取到最后一个位置的子字符串,即为删除前后空格字符后的字符串。 例如,假设我们要删除字符串str中的前后空格字符,具体实现代码如下: ``` string str = " This is a test string. "; // 删除前空格字符 string::size_type pos = str.find_first_not_of(" "); if (pos != string::npos) { str = str.substr(pos); } // 删除后空格字符 pos = str.find_last_not_of(" "); if (pos != string::npos) { str = str.substr(0, pos + 1); } cout << str << endl; // 输出结果:This is a test string. ``` 通过上述代码,我们成功地利用了string对象来删除字符串前后的空格字符,实现了字符串处理的功能。 ### 回答3: 我们可以使用 string 类的成员函数 erase 和 find_first_not_of 实现删除字符串前后空格字符。 以下是代码示例: ```C++ #include <iostream> #include <string> using namespace std; int main() { string str = " Hello, World! "; int pos1 = str.find_first_not_of(" "); // 查找第一个非空格字符的位置 int pos2 = str.find_last_not_of(" "); // 查找最后一个非空格字符的位置 str.erase(0, pos1); // 删除前面的空格字符 str.erase(pos2 - pos1 + 1); // 删除后面的空格字符 cout << str << endl; return 0; } ``` 输出结果为: ``` Hello, World! ``` 首先,我们定义了一个字符串 str,其中包含前后多余的空格字符。我们使用 find_first_not_of 函数查找第一个非空格字符的位置,使用 find_last_not_of 函数查找最后一个非空格字符的位置。然后,我们使用 erase 函数删除前面的空格字符和后面的空格字符。 需要注意的是,如果字符串中只包含空格字符,则 find_first_not_of 函数返回 string::npos,表示未找到非空格字符。在这种情况下,我们不需要删除任何字符。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值