[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] [已解决]批处理中英文字符串长度不一样的问题请教!

本帖最后由 jorlaying 于 2022-12-22 12:54 编辑
  1. @echo off
  2. set str=12345678
  3. set str2=一二三四五六七八
  4. echo %str%
  5. echo %str2%
  6. pause & exit /b
复制代码
str和str2同样都是8个字符,结果中文却长一半。
我想知道有没有办法判断字符是英文还是中文?

判断字符是英文还是中文,之后呢,想咋地?

QQ 20147578

TOP

如果只是要计算字串长度,以下大神的帖子就能解决问题(不区分中英文):
http://www.bathome.net/redirect. ... 4946&ptid=11799

如果想判断中英文,只用纯p实现起来将是极为困难

TOP

回复 2# czjt1234


   截取啊 比如如果是英文 我就截取8个  如果是中文 我就只截取4个

TOP

回复 3# hfxiang


    计算长度我看了,中文和英文长度一样。不是我想要的

TOP

本帖最后由 77七 于 2022-12-21 13:50 编辑

回复 4# jorlaying
  1. set str=12345678
复制代码

这个不是数字吗

不存在中英文混合情况的字符串吗?数字,标点符号等情况呢?
bat小白,请多指教!谢谢!

TOP

回复 4# jorlaying

abc中国d

这样。四个半的怎么算?

QQ 20147578

TOP

如果要么全是英文要么全是中文,可以用下面这个vbs
  1. s1 = "12345678"
  2. s2 = "一二三四五六七八"
  3. Set oFSO = CreateObject("Scripting.FileSystemObject")
  4. Set oWshShell = CreateObject("WScript.Shell")
  5. s = oWshShell.ExpandEnvironmentStrings("%windir%\System32\CScript.exe")
  6. If LCase(WScript.FullName) <> LCase(s) Then
  7.     s = s & " /nologo """ & WScript.ScriptFullName & """ "
  8.     For Each i In WScript.Arguments
  9.         If InStr(i, " ") > 0 Then i = """" & i & """"
  10.         s = s & i & " "
  11.     Next
  12.     oWshShell.Run "cmd.exe /k " & Left(s, Len(s) - 1)
  13.     WScript.Quit()
  14. End If
  15. Wsh.Echo t(s1)
  16. Wsh.Echo t(s2)
  17. Function t(ByVal s)
  18.     t = Left(s, 2)
  19.     If Asc(s) < 127 Then t = Left(s, 4)
  20. End Function
复制代码

QQ 20147578

TOP

回复 8# czjt1234


    解决了,用echo %str%|findstr "[a-zA-Z0-9]"    谢谢!

TOP

返回列表