文件操作的name.contains
时间: 2024-06-07 18:09:57 浏览: 35
`name.contains()` 是一个字符串方法,用于判断一个字符串中是否包含另一个指定的字符串。在文件操作中,通常用它来判断文件名是否包含特定的字符或字符串。比如,可以使用 `name.contains("txt")` 来判断文件名中是否包含 "txt" 这个字符串。如果包含,则返回 true,否则返回 false。
相关问题
string fileName = e.Name; string[] parts = fileName.Split('_'); string barcode = parts[1]; string time = DateTime.Now.ToString("yyyy-MM-dd"); if (fileName.Contains("PASS") && fileName.Contains(barcode) && goodBarcodeList.Contains(barcode)) {在以上代码上修改,在文件操作时,文件名很长,并且还有特殊字符,字母,_等,索引超出数组长度
在文件名很长且包含特殊字符、字母和下划线时,可以考虑使用正则表达式进行匹配,而不是使用字符串的 Split 方法。
例如,可以使用以下代码提取文件名中的 barcode 和时间信息:
```
string fileName = e.Name;
Match match = Regex.Match(fileName, @"_(\d{6})_\d{6}\.jpg");
if (match.Success) {
string barcode = match.Groups[1].Value;
string time = DateTime.Now.ToString("yyyy-MM-dd");
if (fileName.Contains("PASS") && goodBarcodeList.Contains(barcode)) {
// 文件操作代码
}
} else {
// 文件名不符合要求,进行相应处理
}
```
这个正则表达式假设文件名中包含一个六位数字的 barcode,后面跟着一个下划线、另外六个数字和文件扩展名。如果文件名格式有变化,需要相应地修改正则表达式。
public class DottedLine : MonoBehaviour { public List<GameObject> gameObjects; public List<string> wharfId; public bool showBerthingArea = true; public bool showNotifyArea = true; public string currentId = null; void Start() { Transform transforms = transform.GetComponentInChildren<Transform>(); foreach (Transform tf in transforms) { gameObjects.Add(tf.gameObject); } gameObjects.Remove(gameObject); } public void UpdateHeightLight(string id, bool berthingArea, bool notifyArea) { foreach (GameObject go in gameObjects) { if (id == null || go.name.Contains(id)) { LineRenderer line = go.GetComponent<LineRenderer>(); if (line != null) { bool show = false; if (go.name.Contains("BerthingArea")) { show = berthingArea; } else if (go.name.Contains("NotifyArea")) { show = notifyArea; } line.enabled = show; } } } } public void ShowAssignId(string id) { currentId = id; Debug.LogError($"current:{ currentId}"); UpdateHeightLight(id, showBerthingArea, showNotifyArea); } public void ShowAllHeightLight() { currentId = null; UpdateHeightLight(null, true, true); } public void HideAllHeightLight() { currentId = null; UpdateHeightLight(null, false, false); } public void ToggleBerthingArea() { showBerthingArea = !showBerthingArea; UpdateHeightLight(currentId, showBerthingArea, showNotifyArea); } public void ToggleNotifyArea() { showNotifyArea = !showNotifyArea; UpdateHeightLight(currentId, showNotifyArea, showNotifyArea); } 和public class LineRendererController : MonoBehaviour { public DottedLine dottedLine; void Start() { GameObject dock = GameObject.Find("604"); if (dock != null) { // 将游戏对象的名称作为id传递给dottedLine.ShowAssignId()方法 dottedLine.ShowAssignId(dock.name); // 显示该游戏对象的停靠区 dock.GetComponent<DottedLine>().showBerthingArea = true; // 隐藏该游戏对象的通知区 dock.GetComponent<DottedLine>().showNotifyArea = false; }这两段代码要想实现,unity中该怎么操作
这两段代码是 Unity 中的 C# 脚本,需要将它们添加到 Unity 的 GameObject 上,然后通过在代码中调用 GameObject 的属性和方法来操作它们。具体步骤如下:
1. 创建一个空的 GameObject,给它一个有意义的名称,例如 "DottedLineController" 或 "LineRendererController"。
2. 将 DottedLine 脚本和 LineRendererController 脚本添加到 GameObject 上,可以通过拖拽脚本文件到 Inspector 视图中的 Add Component 按钮来完成。
3. 在场景中找到需要操作的 GameObject,例如上面代码中的 "604"。
4. 将该 GameObject 上的 DottedLine 组件的 showBerthingArea 和 showNotifyArea 属性设置为需要的值,可以在 Inspector 视图中找到这两个属性。
5. 在 LineRendererController 脚本中,通过 GameObject.Find() 方法找到需要操作的 GameObject,并将它的名称传递给 dottedLine.ShowAssignId() 方法。
6. 在 Unity 编辑器中运行场景,可以通过调用 DottedLine 和 LineRendererController 脚本中的方法来显示、隐藏、切换停靠区和通知区。
阅读全文